Я написал простое расширение, которое должно позволить мне вызвать метод GetLogger в любом классе.log4net и метод расширения C# | производительность
static class Log4NetExtension {
public static ILog GetLogger(this object cls) {
return LogManager.GetLogger(cls.GetType());
}
}
Таким образом, я могу войти в другой класс следующим образом:
class Test1 {
public void method() {
this.GetLogger().Fatal ("Lorem ipsum no dolor...");
}
}
class Test2 {
public void method() {
this.GetLogger().Error("Lorem ipsum no dolor...");
}
}
Мой вопрос, что делает именно LogManager.GetLogger() вызов метода? Создает ли он журнал каждый раз при вызове метода? Оказывает ли такой подход большое влияние на мое приложение, если я так называю this.GetLogger()?
Не ответ на ваш вопрос, но почему бы вам не вводить «ILogService» в свои классы, которые требуют регистрации? Что произойдет в 'myString.GetLogger()'? – MaYaN
Это создаст новый Logger. Интересно, но как насчет создания интерфейса, который должен реализовать класс, если я хочу войти в этот класс. Тогда вы можете сделать что-то вроде публичного статического ILOG GetLogger (этот IMyType cls); –
Взгляните на: https://github.com/NimaAra/Easy.Logger в проекте «Benchmarker», вы можете увидеть, как вводить «Log4NetService» в свои классы. – MaYaN