log4net не регистрируется при запуске приложения Windows .Net 4.0, созданного в режиме выпуска - PullRequest
6 голосов
/ 28 октября 2010

У меня есть приложение службы Windows .Net 4.0, которое использует log4net.

Вот моя конфигурация log4net.

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

  <appender name="ColorConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
    <mapping>
      <level value="ERROR" />
      <foreColor value="Red, HighIntensity" />
    </mapping>
    <mapping>
      <level value="FATAL" />
      <foreColor value="Red, HighIntensity" />
    </mapping>
    <mapping>
      <level value="WARN" />
      <foreColor value="Blue, HighIntensity" />
    </mapping>
    <mapping>
      <level value="INFO" />
      <forecolor value="White, HighIntensity" />
    </mapping>
    <mapping>
      <level value="DEBUG" />
      <forecolor value="Green, HighIntensity" />
    </mapping>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" />
    </layout>
  </appender>

  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd" />
    <file value="Logs/Server.log" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" />
    </layout>
    <maximumFileSize value="10MB" />
    <rollingStyle value="Composite" />
    <staticLogFileName value="true" />
  </appender>

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

  <root>
    <level value="ALL" />
    <appender-ref ref="ColorConsoleAppender" />
    <appender-ref ref="RollingFileAppender" />
  </root>

</log4net>

Ведение журнала работает должным образом, когда служба запускается при использовании исполняемого файла, который был построен в режиме отладки (файлы журнала создаются по правильному пути к файлу), но не работает, когда он использует исполняемый файл, встроенный в режим выпуска.

Я пытался использовать перекомпилированный log4net dll для .Net 4.0, следуя инструкциям, описанным в этом блоге .. http://tseonet.blogspot.com/2010/07/making-log4net-run-on-net-40.html.

Но это тоже не сработало.

Любая помощь очень ценится.

Ответы [ 3 ]

8 голосов
/ 28 октября 2010

Я предлагаю включить внутреннюю отладку, как описано здесь:

log4net - Устройства, не работающие в IIS7.5

4 голосов
/ 29 ноября 2010

Спасибо Deepu

добавление [assembly: log4net.Config.XmlConfigurator (Watch = true)] в файл assemblyInfo сработало для меня

1 голос
/ 01 июня 2012

Я столкнулся с той же проблемой сегодня, и после просмотра log4net docs сделал следующее, и это сработало для меня.

log4net.Config.XmlConfigurator.Configure();

Думал, стоит поделиться. Ниже приведен класс регистратора, который использует log4net в качестве поставщика

/// <summary>
/// Logger class using log4net library
/// </summary>
public class Log4NetLogger : ILogger
{
    public Log4NetLogger(Type configType)
    {
        log4net.Config.XmlConfigurator.Configure();
        this._logger = LogManager.GetLogger(configType);
    }

}

Для меня атрибут сборки не был возможен, поскольку я включил функцию ведения журнала в отдельную сборку, где log4net был одним из поставщиков.

...