#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();
}