LogManager.getLogger и xmlconfigurator.настройка последовательности

#c# #log4net

#c# #log4net

Вопрос:

У меня есть пользовательский XML-файл с конфигурациями log4net. Приведенный ниже код используется для настройки log4net. Он работает нормально.

Вопрос в том, как работает LogManager.Getlogger получает «MyLogger», когда он не знает деталей файла конфигурации?

Должны ли мы поддерживать какую-либо последовательность при вызове LogManager.getLogger и xmlconfigurator.configure ?

 Class LoggerClass
{

private static readonly ILog fileLogger = LogManager.GetLogger("MyLogger");


public LoggerClass()
{

FileInfo logConfiguration = new FileInfo("ConfigFile.xml");

//Loading the configuration from the xml file. 
XmlConfigurator.Configure(logConfiguration);

}

public void Log(string msg)
{
fileLogger.Log(......); 
}

}
  

Ответ №1:

LogManager класс имеет статические методы, которые используются клиентом для запроса экземпляра регистратора. GetLogger Метод используется для извлечения регистратора.

GetLogger Метод возвращает объект типа ILog , который содержит методы ведения журнала на разных уровнях, а также имеет свойства для определения, включены ли эти уровни ведения журнала в текущей конфигурации.

Что касается последовательности, вызов Xmlconfigurator.Configure() метода настраивает функциональность ведения журнала, следовательно, перед записью любого журнала библиотека log4net должна быть настроена с помощью этой команды Xmlconfigurator.Configure() .

И последовательность вызова LogManager.GetLogger() и Xmlconfigurator.Configure() не имеет значения. Просто убедитесь, что перед любым ведением журнала вы инициализировали регистратор с помощью LogManager.GetLogger() метода и настроили регистратор с помощью Xmlconfigurator.Configure() .

Ссылка: документация log4net

Я надеюсь, это поможет и ответит на ваш вопрос 🙂

Комментарии:

1. Является базовым конфигуратором. Требуется настройка ()? прямо сейчас я этим не пользуюсь. просто с помощью getLogger() и XmlConfigurator. Настройка() работает нормально?

2. @Imortal Извините за мою ошибку, проверьте обновленный ответ. Если вы хотите настроить без XML-файла, вы можете использовать BasicConfigurator.Configure() . Если вы используете, XmlConfigurator.Configure() то BasicConfigurator.Configure() это не требуется.

Ответ №2:

Обычно XmlConfigurator.configure() выполняется при запуске приложения в global.asax в ASP.NET приложение, чтобы все классы в приложении получали конфигурации log4net.

 //Global.asax

void Application_Start(object sender, EventArgs e)
{
    log4net.Config.XmlConfigurator.Configure();
}