2015-03-12 3 views
0

я просто настроить мой log4j, чтобы иметь файл журнала с именем по дате и размеру индекса, конфигурация ниже работает хорошоLog не уважает указанный индекс

log4j.rootLogger=TRACE,monAppender 
log4j.appender.monAppender=org.apache.log4j.rolling.RollingFileAppender 
log4j.appender.monAppender.RollingPolicy=org.apache.log4j.rolling.FixedWindowRollingPolicy 
log4j.appender.monAppender.RollingPolicy.MinIndex=1 
log4j.appender.monAppender.RollingPolicy.maxIndex=5 
log4j.appender.monAppender.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy 
log4j.appender.monAppender.TriggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy 
# 5 Mo just for testing 
log4j.appender.monAppender.TriggeringPolicy.MaxFileSize=5242880 
log4j.appender.monAppender.RollingPolicy.fileNamePattern=D:/log/MyApp_log_%d{yyyy-MM-dd}_%i.log 
log4j.appender.monAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.monAppender.layout.ConversionPattern=|------->| [%-5p - SI] [%d{yyyy-MM-dd HH\:mm\:ss}] [%m] %n 

Но сгенерированный индекс является случайным и нарушение ограничения упомянутый выше (minindex = 1, maxindex = 5), генерируемые файлы именуются следующим образом:

enter image description here

Мой вопрос, как формируется этот показатель? как инициализировать? если это невозможно, это риск повторного восстановления одного и того же индекса, который перезапишет существующий файл!

jar used: log4j-1.2.17.jar, apache-log4j-extras-1.2.17.jar.

Благодарим за ответы.

+0

'% i' должен работать согласно https://logging.apache.org/log4j/extras/apidocs/org/apache/log4j/rolling/FixedWindowRollingPolicy.html –

+0

по ссылке, которую вы мне предоставили, это должен работать: s, и большая проблема заключается в том, что мы не можем отлаживать этот вид лечения (из того, что я знаю), чтобы определить, когда и как инициализируется% i – Nimpo

ответ

0

Ваш конфиг неправильно:

log4j.appender.monAppender.RollingPolicy=org.apache.log4j.rolling.FixedWindowRollingPolicy 
log4j.appender.monAppender.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy 

Вы не можете определить две различные политики для одной и той же Appender. Вторая строка перезапишет первую, заменив FixedWindowRollingPolicy на TimeBasedRollingPolicy. В TimeBasedRollingPolicy, %i, вероятно, секунд со времен Эпохи.

Если вы хотите указать индекс и отметку времени в имени файла, вам придется написать свою собственную политику.