Вопрос по log4net, filenames, c#, logging – Log4net катит ежедневное имя файла с датой в имени файла

107

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

dd.mm.yyyy.log

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

Возможный дубликатLog4net appender filename issue Narottam Goyal

Ваш Ответ

8   ответов
0

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

перечисленные работы, но я не должен был использовать

<staticLogFileName value="false" /> 

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

мне также пришлось установить staticLogFileName в false, иначе он не будет регистрировать
Для меня это не сработало бы без значения & lt; staticLogFileName = & quot; false & quot; / & GT;
29

значения:

<rollingStyle value="Date" />
<staticLogFileName value="false" />
Это работает, но добавляет дату после расширения файла. Например, я получаю файлы журнала, такие как Error.log20111104 - Кто-нибудь знает способ немного лучше отформатировать имя файла?
для чего используется staticLogFileName? Я хочу, чтобы файл журнала был переименован в новое имя только после окончания дня. Я хочу использовать монитор журнала, который смотрит на конкретный каждый раз.
как насчетFileAppender я использую<param name="File" value="E:\MyLog\LogFile-%utcdate{yyyy-MM-dd}.txt"/> в моемweb.config файл, но он дает мне имя как оно естьLogFile-%utcdate{yyyy-MM-dd}
Вот как лучше отформатировать имя файла:stackoverflow.com/questions/615092/…
186
<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>
Я думаю, что вы должны выделить главное, какой параметр решить проблему, как @Mun. Тем не менее, я также проголосовал за ваш ответ.
Это был элемент datePattern, в сочетании с элементом staticLogFileName (и обратите внимание на атрибут value для элемента file), который работал для меня
как насчетFileAppender я использую<param name="File" value="E:\MyLog\LogFile-%utcdate{yyyy-MM-dd}.txt"/> в моемweb.config файл, но он дает мне имя как оно естьLogFile-%utcdate{yyyy-MM-dd}
18

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

<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" />
как насчетFileAppender я использую<param name="File" value="E:\MyLog\LogFile-%utcdate{yyyy-MM-dd}.txt"/> в моемweb.config файл, но он дает мне имя как оно естьLogFile-%utcdate{yyyy-MM-dd}
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 который создал новый файл времени (и новыйfile type!) каждый день - или оба вопроса появились.

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

LOG4NET_Sample_Activity-20171215.log

что я и хотел Подвести итоги:

Don't put the date pattern in the <file value=... attribute, just define it in the datePattern.

Make sure you have the preserveLogFileNameExtension value attribute set to true.

Set the rollingStyle attribute value to Date.

Это сработало и для меня. Спасибо
Вы также можете установить для RollingStyle значение Composite, которое будет меняться как по дате, так и по размеру.
15

что использовал (обратите внимание на «.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
.
.
preserveLogFileNameExtension не работает для более ранних версий log4net (например, v1.2.10), как описаноhere
5

<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>
@ rbuddicom да, но вопрос в том, как сохранить расширение файла.
Атрибут datePattern устанавливает период прокрутки для параметра Date RollingStyle. Увидетьlogging.apache.org/log4net/release/config-examples.html под RollingFileAppender. & quot; Например, шаблон даты & quot; yyyyMMdd & quot; будет катиться каждый день. См. System.Globalization.DateTimeFormatInfo для получения списка доступных шаблонов. & Quot;
почему есть%date{yyyyMM} а такжеvalue="ddMMyyyy" ? какой эффективный шаблон даты?
Я знаю, что Аллан поставил под сомнение цель «значение =» ddMMyyyy ». Ваш комментарий & quot; Я думаю, что datePattern предназначен для имени файла & quot; неверно в этом отношении.
Я думаю datePattern для имени файла, но% date {yyyyMM} для родительского каталога (я хотел это таким образом)
94

llingFileAppender:

<param name="DatePattern" value="dd.MM.yyyy'.log'" />
Спасибо! Вы решили мою проблему, но вJava :)
@mstaessen<preserveLogFileNameExtension value="true" /> правильный синтаксис, и это отличный ответ. Как произошла потеря, могу я спросить?
Похоже, что это было повышено до элемента конфигурации: & lt; datePattern value = & quot; dd.MM.yyyy '.log & apos; & quot; / & GT; Ура!
как насчетFileAppender я использую<param name="File" value="E:\MyLog\LogFile-%utcdate{yyyy-MM-dd}.txt"/> в моемweb.config файл, но он дает мне имя как оно естьLogFile-%utcdate{yyyy-MM-dd}
Если я правильно помню, все прошло так. При запуске log4net сгенерирует первое имя файла в циклической последовательности. Он обнаружит, что этот файл уже существует, и затем решит выполнить откат ко второму файлу, но когда этот файл также уже существует, он не решит выполнить откат, а вместо этого очистит его и перезапишет все в этом втором файле журнала. Это проходит совершенно незамеченным, пока вам не нужны журналы очищенного таймфрейма ...

Похожие вопросы