Log4net катит ежедневное имя файла с датой в имени файла

Я хотел бы иметь файлы, названные, например:

dd.mm.yyyy.log

Как это возможно с log4net?

Ответ 1

В конфигурационном файле Log4net используйте следующий параметр с помощью RollingFileAppender:

<param name="DatePattern" value="dd.MM.yyyy'.log'" />

Ответ 2

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  <file value="logs\" />
  <datePattern value="dd.MM.yyyy'.log'" />
  <staticLogFileName value="false" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="5MB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
</appender>

Ответ 3

Для RollingLogFileAppender вам также нужны эти элементы и значения:

<rollingStyle value="Date" />
<staticLogFileName value="false" />

Ответ 4

Используя Log4Net 1.2.13, мы используем следующие параметры конфигурации, чтобы разрешить дату в имени файла.

<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />

Что обеспечит файлы в следующем соглашении: logname-2015-04-17.txt

При этом обычно лучше иметь следующее, чтобы вы сохраняли 1 журнал в день.

<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />

Если размер файла является предметом беспокойства, следующее позволяет 500 файлов размером 5 МБ, пока не появится новый день. CountDirection разрешает восходящую или нисходящую нумерацию файлов, которые больше не являются текущими.

 <maxSizeRollBackups value="500" />
 <maximumFileSize value="5MB" />
 <rollingStyle value="Composite" />
 <datePattern value="yyyyMMdd" />
 <CountDirection value="1"/>
 <staticLogFileName value="true" />

Ответ 5

Я закончил использовать (обратите внимание на имя файла .log 'и одиночные кавычки вокруг' myfilename _ '):

  <rollingStyle value="Date" />
  <datePattern value="'myfilename_'yyyy-MM-dd"/>
  <preserveLogFileNameExtension value="true" />
  <staticLogFileName value="false" />
  <file type="log4net.Util.PatternString" value="c:\\Logs\\.log" />

Это дает мне:

myfilename_2015-09-22.log
myfilename_2015-09-23.log
.
.

Ответ 6

Я перепробовал все ответы, но всегда что-то не хватало и не функционировало так, как ожидалось.

Затем я немного поэкспериментировал с подсказками, данными в каждом ответе, и добился успеха со следующей настройкой:

<appender name="RollingActivityLog" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="C:\temp\LOG4NET_Sample_Activity.log" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <staticLogFileName value="false" />
  <preserveLogFileNameExtension value="true" />
  <datePattern value="-yyyyMMdd" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %-5level - %message%newline" />
  </layout>
</appender>

Проблема с другими комбинациями параметров заключалась в том, что в последнем файле не было шаблона времени или что шаблон времени был добавлен как .log20171215 который создавал новое время файла (и новый тип файла!) Каждый день - или обе проблемы появился.

Теперь с этим параметром вы получаете файлы, подобные этому:

LOG4NET_Sample_Activity-20171215.log

что я и хотел


Подвести итоги:

  • Не помещайте шаблон даты в атрибут <file value=..., просто определите его в datePattern.

  • Убедитесь, что для атрибута значения preserveLogFileNameExtension установлено значение true.

  • Убедитесь, что для значения staticLogFileName установлено значение false.

  • Задайте для атрибута rollingStyle значение Date.

Ответ 7

Чтобы сохранить расширение файла:

<log4net>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="D:\\LogFolder\\%date{yyyyMM}\\SchT.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maximumFileSize value="30MB" />
      <staticLogFileName value="true" />
      <preserveLogFileNameExtension value="true"/>
      <datePattern value="ddMMyyyy" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
  </log4net>

Ответ 8

Раздел расширенной конфигурации в предыдущем ответе с

 ...
 ...
 <rollingStyle value="Composite" />
 ...
 ...

но мне не пришлось использовать

<staticLogFileName value="false" /> 

. Я думаю, что RollingAppender должен (логически) игнорировать этот параметр, поскольку по определению файл восстанавливается каждый день, когда приложение перезагружается/повторно используется. Возможно, это имеет значение для немедленного опрокидывания КАЖДЫЙ раз, когда приложение запускается.