log4net не входит в систему просмотра событий Windows - PullRequest
6 голосов
/ 29 июня 2011

Я хотел бы войти в Windows Event Viewer, используя log4net.
Я создал консольное приложение (.NET Framework 4), добавил ссылку log4net.dll, поместил следующий код в свой App.config:

<configuration>
 <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
 </configSections>

<log4net>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
  </layout>
</appender>
<root>
  <level value="ALL"/>
  <appender-ref ref="EventLogAppender"/>
</root>
</log4net>

<startup><supportedRuntime version="v2.0.50727"/></startup>
</configuration>

И я поставил следующий код:

class Program
{
    static void Main(string[] args)
    {
        log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
        log.Error("test error", new Exception("error's exception", new Exception("error's innerexception")));

        Console.Read();
    }
}

Не регистрируется, ничего не происходит, почему?

Спасибо

Ответы [ 3 ]

10 голосов
/ 29 июня 2011

Вам необходимо позвонить , настроить .

Изменить:

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

На

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

Когда вы укажете ConfigFile = "App.config" это происходитискать App.config, но ваше имя файла будет [FileName].Config.

5 голосов
/ 29 июня 2011

Вам нужно вызвать XmlConfigurator.Configure из библиотеки log4net, чтобы инициализировать его.(см. ниже)

class Program
{
    static void Main(string[] args)
    {
        // you need this
        XmlConfigurator.Configure();
        log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
        log.Error("test error", new Exception("error's exception", new Exception("error's innerexception")));

        Console.Read();
    }
}
0 голосов
/ 13 мая 2013

Вызовите XmlConfigurator.Configure () в начале вашего приложения.

Вам также необходимо предоставить пользователю, работающему с приложением, права на размещение данных в журнале событий.

Хороший способ сделать это с PowerShell, режим администратора

  New-EventLog EventLogName -source ApplicationName

Кроме того, добавьте эти два параметра в appender

  <param name="LogName" value="EventLogName " />
  <param name="ApplicationName" value="ApplicationName" />

С уважением,

...