Log4net генерирует неправильное имя файла журнала

Я хочу создать имена файлов журналов по следующей схеме:

SBRF_20120820.log
SBRF_20120821.log
SBRF_20120822.log
SBRF_20120823.log

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

<log4net>
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender, log4net">
        <file type="log4net.Util.PatternString" value="Logs/SBRF_%date{yyyyMMdd}.log" />
        <appendToFile value="true" />
        <rollingStyle value="Date" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date %-5level - %message%newline" />
        </layout>
    </appender>
    <logger name="LogEmArquivo">
        <level value="INFO" />
        <appender-ref ref="FileAppender" />
    </logger>
</log4net>

Когда я запускаю программу, сегодня, например, файл SBRF_20120823.log будет создан. Но в последующие дни журнал продолжает писать в SBRF_20120823.log файл, и файлы, которые создаются:

SBRF_20120823.log.2012-08-23
SBRF_20120823.log.2012-08-24
SBRF_20120823.log.2012-08-25
SBRF_20120823.log.2012-08-26

И если я запусту программу завтра, файлы, которые будут созданы:

SBRF_20120824.log.2012-08-24
SBRF_20120824.log.2012-08-25
SBRF_20120824.log.2012-08-26
SBRF_20120824.log.2012-08-27

Зачем?

3 ответа

Решение

Вы не помещаете шаблон даты в <файл> - это статическая часть имени файла. Вы должны поместить его в .

Кроме того, если вы используете log4net 1.2.11, вы можете использовать , который также помещает datePattern в текущий файл.

Я думаю, что вы хотите, чтобы ваша конфигурация выглядела так:

<log4net>
  <appender name="FileAppender" type="log4net.Appender.RollingFileAppender, log4net">
      <file type="log4net.Util.PatternString" value="Logs/SBRF_.log"/>
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd" />
      <preserveLogFileNameExtension value="true"/>
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date %-5level - %message%newline" />
      </layout>
  </appender>
  <logger name="LogEmArquivo">
      <level value="INFO" />
      <appender-ref ref="FileAppender" />
  </logger>

Удалить <rollingStyle value="Date" />,

Не думайте, что вы изменили это поведение с помощью RollingFileAppender, поэтому вам придется создать свой собственный appender.

Другие вопросы по тегам