понедельник, 1 ноября 2010 г.

Log4net: Issue with RollingFileAppender

Достаточно давно работаю с Log4Net и в принципе нахожу его весьма неплохим и простым в использовании инструментом.
Причем пользуюсь я им именно в режиме ротации логов (RollingFileAppender)

Настраиваю его как то вот так:
    <appender name="all" type="log4net.Appender.RollingFileAppender">
      <file value=".\All.log" />
      <appendToFile value="true" />
      <maxSizeRollBackups value="1000" />
      <maximumFileSize value="10000" />
      <rollingStyle value="Size" />
      <staticLogFileName value="true" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{version}] - %message%newline" />
      </layout>
    </appender>
 

Недавно столкнулся с тем, что, иногда в папке с логами, вижу дикое количество очень коротких фрагментов лога. Работать с такими обрезками совершенно не возможно.

После некоторого исследования оказалось, что происходит это, если основной файл лога (в нашем случае All.log) был залочен (например открыт в редакторе), после этого механизм ротации логов перестает работать человеческим образом и начинает генерировать файлы вида All.log.123 при каждом создании логера этого типа.
Причем если убрать +MinimalLock то картина становится еще хуже т.к. новые файлы просто не создаются, а переименовывается один и тот же.

Без выключения staticLogFileName мне это победить не удалось, а с staticLogFileName мне не подходит.

Комментариев нет: