Настройка log4net с помощью xml файла

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

<!--?xml version="1.0" encoding="utf-8" ?-->
<configuration>
 <configsections>
 </configsections></configuration><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"><code>
 
 <log4net>
 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
 <layout type="log4net.Layout.PatternLayout">
 <conversionpattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline">
 </conversionpattern></layout>
 </appender>
 <root>
 <level value="INFO">
 <appender-ref ref="ConsoleAppender">
 </appender-ref></level></root>
 </log4net>
</code>
<p> и у меня есть мой основной класс (просто тестовый пример)</p>
<pre class="prettyprint linenums">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();
 }
 }
}

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

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

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

2 ответа

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


попробуйте этот путь. работал на меня..

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

Я знаю очень поздний ответ. но будет полезен для одних.

licensed under cc by-sa 3.0 with attribution.