如果您在温莎城堡中使用 LoggingFacility,如果您的类中有可选的记录器依赖项(城堡可以将记录器注入其中的 ILogger 属性),容器将自动解析与您的类关联的记录器,但是如果我想使用AOP(拦截器方法)来实现日志记录?我基本上想写这样的东西:
public void Intercept(IInvocation invocation)
{
ILogger logger = LogManager.GetLogger(invocation.TargetType);
//..
}
但Castle框架中没有LogManager可言。解决这个问题的最佳方法是什么?我应该忽略工具方法并直接在拦截器中使用 log4net 吗?
在构造函数中依赖 Castle.Core.Logging.ILoggerFactory 并在 Intercept 方法中从工厂创建记录器
public class LoggingInterceptor : IInterceptor
{
readonly ILoggingFactory loggingFactory;
public LoggingInterceptor(ILoggingFactory loggingFactory)
{
this.loggingFactory = loggingFactory;
}
public void Intercept(IInvocation invocation)
{
ILogger logger = loggingFactory.Create(invocation.TargetType);
//..
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)