log4net один файл за прогон - PullRequest
45 голосов
/ 16 июня 2010

Мне нужно, чтобы приложение создавало файл журнала при каждом запуске.

Мой предпочтительный формат будет App.log.yyyy-MM-dd_HH-mm-ss . Если это невозможно, я бы согласился на App.log.yyyy-MM-dd.counter

Это моя текущая конфигурация приложения:

<appender name="File" type="log4net.Appender.RollingFileAppender">
  <file value="App.log"/>
  <rollingStyle value="Date"/>
  <datePattern value=".yyyy-MM-dd_HH-mm-ss"/>
  <staticLogFileName value="false"/>
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>

Но он создает случайное количество файлов на основе даты и времени.

Ответы [ 3 ]

58 голосов
/ 16 июня 2010

Я предполагаю, что приложение должно создавать только один файл журнала при каждом запуске, так что вам не нужен обновляемый файловый аппендер (хотя моё решение также подойдет для прокручиваемых файловых аппендеров):

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file type="log4net.Util.PatternString" value="c:\temp\App-%date{yyyy-MM-dd_HH-mm-ss}.log" />
    <appendToFile value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%2thread] %-5level - %message%newline" />
    </layout>
</appender>

(Очевидно, что вы можете использовать другой собственный макет и другие настройки для приложения файла).

34 голосов
/ 16 февраля 2012

Также обратите внимание, что вы можете установить свой стиль прокатки как

rollingstyle="Once"

, и он будет создавать новый файл при каждом запуске.Если для staticLogFileName установлено значение true (например, logname.log), для предыдущих журналов будет установлено значение logname.log.1, logname.log.2 и т. Д.

Количество файлов, сохраненных до перезаписи самого старого (скажем,10) можно управлять настройкой

maxSizeRollBackups="10"

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

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="Logs\MyLog-%date{dd-MM-yyyy}.log" />
    <appendToFile value="false" />    
    <maxSizeRollBackups value="-1" /> <!--infinite-->
    <staticLogFileName value="true" />
    <rollingStyle value="Once" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date [%thread] %c{1} - %m%n" />
    </layout>
</appender>

Не уверен на 100%, если мне нужно appendToFile="false", как , документы говорят, что это делается автоматически при использовании rollingStyle="Once", нов любом случае это проясняет ситуацию.

0 голосов
/ 23 августа 2017

Это документировано из apache в документации log4net по адресу:

https://logging.apache.org/log4net/release/config-examples.html

Ctrl + F для "за выполнение программы"

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="logfile.txt" />
    <appendToFile value="false" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="50GB" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...