Log4Net: как получить Logger? - PullRequest
5 голосов
/ 19 августа 2010

Я использую Log4Net в течение нескольких месяцев, и я создаю новый Logger в качестве переменной-члена для каждого класса, например:

// Member variables
private readonly ILog m_Logger = LogManager.GetLogger("MyClass");

Затем я вызываю регистратор из каждого метода в классе, который регистрирует, например:

// Initialize
m_Logger.Info("MyClass.MyMethod() invoked.");
...
m_Logger.Debug("MyClass.MyMethod() did something...");
...
m_Logger.Info("MyClass.MyMethod() completed.");

Есть ли причина не использовать этот подход или есть лучший способ настроить регистратор? Спасибо за вашу помощь.

1 Ответ

13 голосов
/ 19 августа 2010

Ваш регистратор, вероятно, должен быть статическим, и вы можете воспользоваться другими переопределениями, такими как:

private static readonly ILog m_Logger = LogManager.GetLogger(typeof(MyClass));

Для повышения производительности вы также должны проверить уровень журнала, в котором вы находитесь, перед вызовомсоответствующая функция журнала.Например:

if (m_Logger.IsDebugEnabled) { m_Logger.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString()); }

В приведенном выше примере также показано использование отражения для получения имени метода.

...