Log4Net не катится по MaxFileSize - PullRequest
       35

Log4Net не катится по MaxFileSize

2 голосов
/ 08 декабря 2010

Каким-то образом моя log4net не переключается на новый файл, когда старый файл журнала превышает MaxFileSize, а также прекращает запись информации журнала в уже превышенный. Но когда я перезагружал сервер, он переименовал старый в ServerLog.txt.1, создал новый файл ServerLog.txt и записал в этот файл.

Вот мой файл log4net.xml:

<?xml version="1.0" encoding="utf-8"?>
<log4net debug="true">
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\ServerLog.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="5MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>

  <root>
    <level value="DEBUG" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>
</log4net>

Может кто-нибудь помочь мне? Спасибо.

Ответы [ 4 ]

2 голосов
/ 16 декабря 2010

Я подозреваю, что ваша проблема может возникнуть из-за использования журнала IIS. Так как существует возможность доступа к файлу журнала из IIS разных доменов приложений, могут возникнуть проблемы с тем, что домен приложения не может выполнить прокрутку файла, поскольку файл журнала также открыт в другом домене приложения.

Вам потребуется настройка модели блокировки с вашим приложением, чтобы предотвратить столкновение доменов приложений при доступе к файлу.

Вы должны быть в состоянии сделать что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?>
<log4net debug="true">
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\ServerLog.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="5MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
    <lockingModel type="log4net.Appender.FileAppender+MutexLock" />
  </appender>

  <root>
    <level value="DEBUG" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>
</log4net>
1 голос
/ 17 декабря 2010

Попробуйте установить значение appendToFile в false.Смотри http://logging.apache.org/log4net/release/sdk/log4net.Appender.RollingFileAppender.RollingStyle.html

0 голосов
/ 22 февраля 2019

Измените "RollingStyle" на "Composite" в Config, сработало для меня.

<log4net debug="true">
  ....  
  <rollingStyle value="Composite"/>
  ....
</log4net>
0 голосов
/ 17 декабря 2010

Я бы попытался удалить «staticLogFileName». Мы используем те же самые настройки конфигурации, что и вы; но мы не указываем свойство staticLogFileName. (Это выстрел в темноте; потому что все должно быть в порядке, если для staticLogFileName задано значение true)

...