2
我使用Log4Net
登錄我的應用程序的所有處理的例外。目前我想記錄每個方法進入我的應用程序(用於測試目的)。爲此我使用AutoFac
攔截能力,somethong這樣的:日誌使用的log4net + AutoFac攔截
builder.Register(c=> new MyClass()).As<IMyInterface>().EnableInterfaceInterceptors().InterceptedBy(typeof(LoggerClass));
builder.Build();
和我LoggerClass
看起來是這樣的:
public class LoggerClass : StandartInterceptor
{
ILog _log = LogManager.GetLogger(typeof(LoggerClass));
override void PreProceed(IInvocation invovation)
{
_log.Info(string.Format("entering method: {0}",invocation.Method.Name);
}
}
現在這個實施將打印信息的所有方法調用(攔截捕獲所有方法條目)。
問題
我想用這種攔截機制來記錄每一個處理例外。 例如,而不是編碼這樣的:
catch (myException ex)
{
_log.Error(string.Format("catches exception {0}", ex.Message));
}
,我會在我的LoggerClass
額外的方法,將包裹catch語句,並注入到其日誌消息。 有沒有辦法使用Log4Net
辦呢?因爲攔截器基本上是圍繞這個方法工作的,我需要它在方法內部工作。
,10倍以上你的回答。但我有一些問題。我使用攔截器的原因是因爲它允許我從一個地方(我的LoggerClass)配置日誌記錄策略,所以在我的應用程序穩定後,我將能夠從一個地方更改我的策略。例如,如果我想關閉日誌記錄,每次接聽電話,我都可以從一個地方訪問,而不是清除catch語句中的所有呼叫。 – doubleM