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