Настройка 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>&lt;log4net&gt;
 &lt;appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"&gt;
 &lt;layout type="log4net.Layout.PatternLayout"&gt;
 &lt;conversionpattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline"&gt;
 &lt;/conversionpattern&gt;&lt;/layout&gt;
 &lt;/appender&gt;
 &lt;root&gt;
 &lt;level value="INFO"&gt;
 &lt;appender-ref ref="ConsoleAppender"&gt;
 &lt;/appender-ref&gt;&lt;/level&gt;&lt;/root&gt;
 &lt;/log4net&gt;</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.