Наличие журнала в день
В настоящее время мое приложение использует log4net для регистрации ошибок, для этого используется web.config:
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="c:/paypal/logs/gateway.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
Однако проблема заключается в том, что каждый день журналы всегда идут в gateway.log
Кто-нибудь знает способ иметь другой файл журнала в день с помощью log4net?
В идеале я не хочу вручную редактировать web.config
каждую ночь с помощью запланированной задачи.
Ответы
Ответ 1
Вы должны использовать RollingFileAppender с помощью rollStyle Date
и datePattern yyyyMMdd
(это будет работать каждый день).
Пример конфигурации:
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:/paypal/logs/gateway.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
</layout>
</appender>
UPDATE: Я думаю, что лучший способ - включить дату в имя файла. И используйте значение datePattern, чтобы показывать, когда должен быть создан новый файл журнала.
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="c:/paypal/logs/gateway_%date{yyyyMMdd}.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
</layout>
</appender>
В этом случае все ваши файлы будут иметь имя типа gateway_20120427.log
.
Ответ 2
Как с помощью RollingFileAppender
<appender name="RollingLogFileAppenderOutput" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="c:\my.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'.log'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender>
изменить
Это весь раздел конфигурации log4net, который нужно выполнять каждый день, так же, как @lazyberezovsky ответил просто добавив log4net и root для уточнения
edit2
<file value="c:/paypal/logs/gateway_" />
это создаст файл с именем "gateway_", а в конце дня (2012-04-27) он будет переименован в gateway_20120427.log, а на следующий день (2012-04-28) он снова создаст file gateway_, и в конце он создаст gateway_20120428.log.
<log4net>
<appender name="RollingLogFileAppenderOutput" type="log4net.Appender.RollingFileAppender">
<file value="c:/paypal/logs/gateway_" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'.log'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppenderOutput" />
</root>
</log4net>
Ответ 3
PreserveLogFileName
Этот параметр сохраняет расширение файла так же, как только вы катите журнал.
<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:/paypal/logs/gateway.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="_yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
</layout>
<preserveLogFileNameExtension value="true" />
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>
</log4net>