log4net иногда не переворачивает файл журнала, когда для rollstyle установлено значение date - PullRequest
3 голосов
/ 27 января 2011

У меня есть приложение для Windows C #, которое использует log4net для регистрации.Вот как настраиваются регистраторы:

 <log4net>
    <appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Local\logs\ApplnTrace.log" />
      <threshold value="INFO" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%5p] - (%file:%line) %m%n" />
      </layout>
    </appender>
    <appender name="MSGFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value=".\local\logs\MsgTrace.log" />
      <threshold value="INFO" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d %n%m%n" />
      </layout>
    </appender>
    <logger name="ApplnLogger">
      <appender-ref ref="DebugFileAppender" />
    </logger>
    <logger name="MsgLogger">
      <appender-ref ref="MSGFileAppender" />
    </logger>
 </log4net>

Файлы иногда переворачиваются по дате, а иногда нет, а когда файлы не переворачиваются, регистрация также останавливается.Кто-нибудь может помочь мне выяснить, почему?

Ответы [ 2 ]

4 голосов
/ 27 января 2011

log4Net предназначен для тихого сбоя.Когда все перестает работать, обычно возникает проблема (чаще всего это проблема конфигурации или проблема безопасности файловой системы).

Возможно, вы захотите попробовать включить внутреннюю отладку log4net.Запаркуйте этот ключ в элементе <appSettings> вашего app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>
</configuration>

и запустите ваше приложение.Log4net будет извергать кучу отладочной информации.Он записывается в System.Console и в систему System.Diagnostics.Trace.Вы можете перехватить сообщения трассировки из подключенного отладчика или добавив прослушиватель трассировки в файл app.config.Если прослушиватель трассировки выполняет запись в файл, убедитесь, что у вашего процесса есть права на запись, иначе вы ничего не увидите:

<configuration>
...
  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add
          name="textWriterTraceListener" 
          type="System.Diagnostics.TextWriterTraceListener" 
          initializeData="C:\tmp\log4net.txt"
          />
      </listeners>
    </trace>
  </system.diagnostics>
...
</configuration>

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

Подробнее здесь:

2 голосов
/ 27 января 2011

Без источника сложно сказать.Приложение также перестает работать?Если да, найдите фатальный недостаток в вашем приложении.

Если нет, судя по JIRA log4net, существует множество проблем с RollingFileAppender (см .: log4net JIRA ):

"RollingFileAppender прекращает ведение журналапериодически, когда он пытается перевернуть файл журнала "

" RollingFileAppender with RollingFile = "Date" и MaximumFileSize оба не работают одновременно. "

Может бытьэто одна из тех проблем, которая тебе больно.

...