2016-03-14 162 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"); 
} 

我希望你的想法。這是一個相當乾淨,不顯眼的後臺任務登錄方式,這樣你就不會從主執行線程中偷取任何時間。