使用Castle Windsor注入日志记录依赖项

时间:2011-08-12 21:13:37

标签: c# .net castle-windsor

我试图将Castle Windsor的日志依赖注入我的代码。更准确地说,每当类中的方法抛出错误或应用程序流进入方法时,它只需登录到文件中。如何通过写

来做到这一点
logger.Debug("Error code");

在每个方法明确的方法中。假设我们在每个类或方法上添加属性以利用日志记录工具。

提前致谢。

1 个答案:

答案 0 :(得分:5)

使用Castle Windsor中的interceptor facility

所以用

标记你的课程
[Interceptor(typeof(UnhandledExceptionLogger))]

并创建一个实现UnhandledExceptionLogger的类IInterceptor。大致是:

public void Intercept(IInvocation invocation) {
    try {                
        invocation.Proceed();
    }
    catch (Exception e) {
        // log the exception e
        throw;
    }
}

然后当Castle Windsor创建一个标有此Interceptor的类的实例时,它将创建一个包含上述try / catch log / rethrow块中所有方法调用的代理。