Внедрить зависимость ведения журнала с помощью Castle Windsor - PullRequest
1 голос
/ 13 августа 2011

Я пытался внедрить зависимости журналирования Castle Windsor в мой код.Точнее, всякий раз, когда метод в классе выдает ошибку или поток приложения входит в метод, он просто входит в файл.Как это сделать, написав ничего вроде

logger.Debug("Error code");

в методах явно для каждого из методов.Предположим, мы добавили атрибут в каждый из классов или методов, чтобы использовать для этого средства ведения журнала.

Заранее спасибо.

1 Ответ

5 голосов
/ 13 августа 2011

Используйте средство перехвата в замке Виндзор.

Так что пометьте свой класс

[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.

...