2016-03-14 116 views
0

需要记录几乎所有MVC 5应用程序的用户活动,即创建,更新和删除7个表格。应用活动监视器

管理这些表的部分更新涉及了将近25个动作方法,我正在寻找一种方法来记录所有这些动作方法的活动,而无需到处更改。

有什么建议吗?如何实现这一目标?

+0

使用[AOP](https://www.postsharp.net/aop.net)为代码注入所需的方法。 – tchelidze

+0

您可以使用过滤器记录哪些avtion方法正在被用户调用。或者如果您需要记录更改,则用户可以记录由ef跟踪的更改。 – musium

回答

0

我会触发一个后台记录器工作者(在后台/并行任务),并通过某种中介提交消息。

您将不得不保留一个可以发布/订阅的记录器,单例和一个介体的实例。

一种实现方式可能是利用棱镜事件聚合的:

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"); 
} 

我希望你的想法。这是一个相当干净,不显眼的后台任务登录方式,这样你就不会从主执行线程中偷取任何时间。