我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
吗?因为基本上拦截器围绕该方法工作,我需要它在方法内部工作。