Добавить текущую дату в файл журнала с помощью Log4Net
Все, что я хочу сделать, это добавить текущую дату и время в файл журнала, скажем:
"export_(Wed_Feb_21_2009_at_1_36_41PM)"
Вот моя текущая конфигурация из моего app.config
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\export.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
</layout>
</appender>
Является ли добавление даты к моему файлу журнала, или это одна из тех вещей, которые мне нужно делать в коде, а не в конфигурации?
Ответы
Ответ 1
Добавьте в свой конфигурационный файл следующее:
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="c:\\ProjectX\\Log\\log.txt"/>
<param name="AppendToFile" value="true"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="yyyy.MM.dd"/>
<param name="StaticLogFileName" value="true"/>
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
Ответ 2
Чтобы создать имя файла, например:
log_2013-12-19.txt
внести изменения
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="log_"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="yyyy-MM-dd.\tx\t" />
<param name="StaticLogFileName" value="false"/>
</appender>
Обратите внимание на параметр "DatePattern", где. \tx\t делает расширение имени файла .txt. Если вы предоставили .txt вместо. \Tx\t, это сохранит имя файла с расширением .PxP, если время PM или .AxA в случае AM. поэтому я использовал \t для принудительного ввода для записи символа вместо шаблона. Также может быть добавлено время и то, что требуется для временного шаблона.
Итак, это может быть действительно то, что хотел Philipp M.
Ответ 3
Для тех, кто заинтересован, вот решение:
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\\Users\\chris\\Documents\\log_.txt"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="_(yyyy.MM.dd-hh_mm_ss)"/>
<param name="StaticLogFileName" value="false"/>
<maximumFileSize value="100KB" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
</layout>
</appender>
и unit test, который проверяет это:
[Test]
public void TestLogger()
{
logger.Info("Start Log");
for (int i = 0; i < 2500; i++)
{
logger.Info(i);
}
logger.Info("End Log Log");
}
Он производит следующий вывод:
log_.txt_(2009.02.19-01_16_34)
Не то, что я хотел, но лучше, чем раньше.
Ответ 4
Если вы хотите использовать суффикс .log(для создания файла, такого как myLogPrefix.20160309.log), используйте:
<appender name="GeofenceFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<file type="log4net.Util.PatternString" value="C:\\Logs\\myLogPrefix" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=".yyyyMMdd.lo'g'" />
<staticLogFileName value ="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger – %message%newline" />
</layout>
</appender>
Запущенными являются staticLogFileName = false
, которые позволяют вам создавать сводки (на лету) (вместо перезапуска службы\сервер), а неудобный 'g'
в datepattern
, так как g
является магическим символом в datepattern
. Существует не хорошая документация на сайте log4net, чтобы изучить это, так что это действительно мудрость, полученная от проб и ошибок, и очистка других людей.
Ответ 5
Используйте StaticLogFileName:
<param name="StaticLogFileName" value="true"/>