русский
Germany.ruForen → Архив Досок→ Programmierung

log4net

406  
Murr патриот14.08.15 12:59
Murr
14.08.15 12:59 
Вопросик по <log4net>...
Пользуюусь, но глубоко не рыл - базовая конфигурация, логгеры и пожалуй все.
Логи пишутся, логи смотрятся, но и логи растут до невозможности.
Особенно если включен уровень <INFO> - там почти отладочная информация.
Вопросик к тем кто смотрел глубже.
Есть желание иметь ограничения на лог:
- по-суточный лог в одном файле
- хранение по-суточных логов за неделю или две.
Есть где-то такое? Где посмотреть?
#1 
MarS82 знакомое лицо14.08.15 14:50
NEW 14.08.15 14:50 
in Antwort Murr 14.08.15 12:59
In Antwort auf:
- по-суточный лог в одном файле

Как пример:
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">
<file value="./logs/log"/>
<staticLogFileName value="false"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value=".yyyyMMdd"/>
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger.%method (%line) - %message%newline"/>
</layout>
</appender>
Если необходимо, можно по неймспейсам разделить как уровень логирования, так и способ.
In Antwort auf:
- хранение по-суточных логов за неделю или две.

Если задача заключается в удалении файлов, старше недели - не уверен, что такое можно реализовать с помощью log4net, но вполне можно решить обычным заданием на уровне OS.
#2 
Murr патриот17.08.15 15:54
Murr
NEW 17.08.15 15:54 
in Antwort MarS82 14.08.15 14:50
Попробовал. Что-то не связывается.
Файл - создается, лог пишется, но разделения по датам - нет.
можно по неймспейсам разделить как уровень логирования
-------
Это - понятно, но пока не интересно.
Интересно - чтобы сегодня писалось в 2015.08.17.log, а завтра, - 2015.08.18.log
#3 
MrSanders старожил17.08.15 16:34
NEW 17.08.15 16:34 
in Antwort Murr 17.08.15 15:54, Zuletzt geändert 17.08.15 16:37 (MrSanders)
rtfm
https://logging.apache.org/log4net/release/config-examples.html
В ответ на:

This example show how to configure the RollingFileAppender to roll log files on a date period. This example will roll the log file every minute! To change the rolling period adjust the DatePattern value. For example, a date pattern of "yyyyMMdd" will roll every day. See System.Globalization.DateTimeFormatInfo for a list of available patterns.

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logfile" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd-HHmm" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>



В примере MarS82, наверное, точка была лишняя.
В ответ на:
<datePattern value=".yyyyMMdd"/> 

#4 
Murr патриот17.08.15 18:18
Murr
NEW 17.08.15 18:18 
in Antwort MrSanders 17.08.15 16:34
Нее, мой собственный глюк - не поменял тип аппендера с <File...> на <RollingFile...>.
Чтобы получить дату в имени файла нужно иметь <staticLogFileName value="false" />
Точка (или буквы в паттерне) имени - нормально - они добавляются в имя файла "как есть".
Вот чего пока не нашел - как вместо <File.Log.20150817> получить <File.20150817.Log>
не хочется менять расширение каждый день... ну паттерн <datePattern value="yyyyMMdd.Log" />
можно конечно написать...
#5 
Murr патриот17.08.15 18:34
Murr
NEW 17.08.15 18:34 
in Antwort Murr 17.08.15 18:18
Нее, паттерн <datePattern value="yyyyMMdd.Log" /> - не работает - его "g" интерпретируется как управляющее для вывода эры...
Зато есть замечательная, но не описанная в доках, закорючка <preserveLogFileNameExtension value="true" /> - получается как надо <File.20150817.log>...
#6