如果您在Castle Windsor中使用LoggingFacility,如果您的类中有可选的记录器依赖项(城堡可以注入记录器的ILogger属性),容器将自动解析与您的类关联的记录器,但我如何利用如果我想使用AOP(拦截器方法)实现日志记录?我基本上想写一些类似的东西:
public void Intercept(IInvocation invocation)
{
ILogger logger = LogManager.GetLogger(invocation.TargetType);
//..
}
但是在Castle框架中没有LogManager可以说。解决这个问题的最佳方法是什么?我应该忽略设施方法并直接在拦截器中使用log4net吗?
答案 0 :(得分:4)
在构造函数中依赖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);
//..
}
}