Настройка log4net с помощью XML-файла - PullRequest
16 голосов
/ 24 августа 2009

Я попытался настроить log4net для записи всего на консольный вывод. У меня есть файл конфигурации с именем Log4Net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="INFO" />
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
</configuration>

и у меня есть мой основной класс (только тестовый пример)

namespace TestLog4Net {
    class Program {
        private static readonly ILog log = LogManager.GetLogger(typeof(Program));

        static void Main(string[] args) {
            log.Info("Info");
            log.Error("Error");
            Console.ReadKey();
        }
    }
}

Я добавил эти строки в AssemblyInfo.cs

[assembly: log4net.Config.XmlConfigurator(
ConfigFile = "Log4Net.config", Watch = true)]

Но теперь ничего не зарегистрировано, кто-то может объяснить это?

Ответы [ 2 ]

19 голосов
/ 24 августа 2009

Если у вас есть log4net config в отдельном файле конфигурации, вы не должны включать элементы конфигурации и configSections. log4net должен быть элементом верхнего уровня после объявления xml.

18 голосов
/ 01 марта 2010

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

string logFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "\\Config\\Log4Net.config");
    FileInfo finfo = new FileInfo(logFilePath);
   log4net.Config.XmlConfigurator.ConfigureAndWatch(finfo); 

Я понимаю, что ответ очень поздний. Но будет полезно для некоторых прав.

...