Добавить текущую дату в файл журнала с помощью 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>
Возможно ли добавить дату в мой лог-файл или это одна из тех вещей, которые мне нужно делать в коде, а не в конфигурации?
5 ответов
Добавьте следующее в ваш конфигурационный файл
<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>
Чтобы создать имя файла, например:
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 для принудительного написания символа вместо шаблона. Время также может быть добавлено и то, что когда-либо потребовалось.
Таким образом, это может быть действительно то, что хотел Филипп М.
Для тех, кто заинтересован, вот решение:
<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>
и модульный тест, который проверяет это:
[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)
Не совсем то, что я хотел, но лучше, чем раньше.
Если вы хотите использовать суффикс.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 нет хорошей документации, чтобы изучить это, так что это действительно мудрость, полученная методом проб и ошибок и изучающая опыт других людей.
Используйте StaticLogFileName:
<param name="StaticLogFileName" value="true"/>