2010-12-01 2 views
7

У меня есть файл журнала с именем app.log. Когда он перевернется (я настраиваю его каждую минуту только для целей тестирования), я бы хотел, чтобы он был переименован в app-YYYY-MM-dd_HH-mm.log, но он не работает. Ниже приведены настройки log4j:Использование FileNamePattern, RollingFileAppender в log4j

log4j.appender.myLog=org.apache.log4j.RollingFileAppender 
log4j.appender.myLog.rollingPolicy=TimeBasedRollingPolicy 
log4j.appender.myLog.File=logs/app.log 
log4j.appender.myLog.rollingPolicy.FileNamePattern=logs/app-%d{yyyy-MM-dd_HH-mm}.log 
log4j.appender.myLog.Append=true 
log4j.appender.myLog.layout=org.apache.log4j.PatternLayout 
log4j.appender.myLog.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n 

Кто-нибудь знает, в чем проблема? Во время опроса он просто переименовывает файл в app.log.1.

ответ

0

Попробуйте удалить logs/ из обоих .File и .FileNamePattern. Я читаю код, и похоже, что он должен работать, но, возможно, стоит уменьшить проблему.

https://svn.apache.org/repos/asf/logging/log4j/companions/extras/trunk/src/main/java/org/apache/log4j/rolling/TimeBasedRollingPolicy.java

+0

Пробовал уже, но не работает. – jasonline 2010-12-06 02:18:03

3

Я предполагаю, что вы используете только log4j. Версия 1.2.16 - самая новая. rollingPolicy не существует в исходном коде; только в файле log4j.dtd для конфигурации на основе xml.

Единственный способ получить то, что вы хотите работать, - загрузить Apache extras companion for log4j.


В конце концов, если вы не хотите использовать дополнительные услуги, Вы можете обойти с помощью:

org.apache.log4j.DailyRollingFileAppender

Минус этого пути является то, что файлы журнала не будут архивированная.

3

Согласно log4j wiki:

Обратите внимание, что TimeBasedRollingPolicy может быть сконфигурирован только с XML, а не log4j.properties

The API не говоря уже о том, что, но, возможно, это проблема?

+1

Это было [исправлено] (https://bz.apache.org/bugzilla/show_bug.cgi?id=36384) некоторое время назад, а log4j-1.2.16.jar или выше вместе с обработкой пакета log4j-extras отлично когда в конфигураторе свойств используется политическая политика, основанная на времени. Недавно я сделал патч, позволяющий автоматически создавать рекурсивные подкаталоги при использовании этой комбинации: http://pastebin.com/DugN7AiZ. – Moreaki 2015-10-28 09:05:38

3

Скачайте log4j файл с расширением jar и поместите его в папку lib. добавить Также rollingPolicy тэга следующим образом:

<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
    <param name="FileNamePattern" 
     value="D:/Apps/Enterprise_domain/diagnostics/logs/diagnostics.% d{yyyy-MM-dd_HH-mm}.log"/> 
</rollingPolicy> 
1

Пожалуйста, проверьте вы включили apache-log4j-extras.jar и использование log4j-1.2.16.jar или, по крайней мере, выше 2,17 версии. вот пример log4j.properties, который можно использовать.

#Worked with 2.17 version 
    #make log files rotate every minute or hour and zip old rotated logs 
    log4j.rootLogger=INFO, loggerId 
    log4j.appender.loggerId=org.apache.log4j.rolling.RollingFileAppender 
    log4j.appender.loggerId.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy 
    log4j.appender.loggerId.rollingPolicy.ActiveFileName=worker.log 
    log4j.appender.loggerId.rollingPolicy.FileNamePattern=worker-.%d{yyyyMMdd-HHmm}.log.gz 
    log4j.appender.loggerId.layout=org.apache.log4j.PatternLayout 
    log4j.appender.loggerId.layout.ConversionPattern=%d [%t] %-5p (%F:%L) - %m%n 

для более подробной информации о свойствах, пожалуйста, проверьте here

Смежные вопросы