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