0
需要记录几乎所有MVC 5应用程序的用户活动,即创建,更新和删除7个表格。应用活动监视器
管理这些表的部分更新涉及了将近25个动作方法,我正在寻找一种方法来记录所有这些动作方法的活动,而无需到处更改。
有什么建议吗?如何实现这一目标?
需要记录几乎所有MVC 5应用程序的用户活动,即创建,更新和删除7个表格。应用活动监视器
管理这些表的部分更新涉及了将近25个动作方法,我正在寻找一种方法来记录所有这些动作方法的活动,而无需到处更改。
有什么建议吗?如何实现这一目标?
我会触发一个后台记录器工作者(在后台/并行任务),并通过某种中介提交消息。
您将不得不保留一个可以发布/订阅的记录器,单例和一个介体的实例。
一种实现方式可能是利用棱镜事件聚合的:
public class Logger
{
private IEventAggregator _eventAggregator;
public Logger(IEventAggregator eventAggregator){
_eventAggregator = eventAggregator;
// Register events to log
_eventAggregator.GetEvent<Messages.MethodCalled>().Subscribe(() => LogMethodCall);
}
public void LogMethodCall(string information){
// Do log things here
}
}
这就需要你发布这些事件的地方
public void DoSomething(){
// other code
// log it
_eventAggregator.GetEvent<Messages.MethodCalled>().Publish("DoSomething called");
}
我希望你的想法。这是一个相当干净,不显眼的后台任务登录方式,这样你就不会从主执行线程中偷取任何时间。
使用[AOP](https://www.postsharp.net/aop.net)为代码注入所需的方法。 – tchelidze
您可以使用过滤器记录哪些avtion方法正在被用户调用。或者如果您需要记录更改,则用户可以记录由ef跟踪的更改。 – musium