Используя FileNamePattern, RollingFileAppender в log4j - PullRequest
7 голосов
/ 01 декабря 2010

У меня есть файл журнала с именем app.log. Когда он переворачивается (я устанавливаю его каждую минуту только для целей тестирования), я бы хотел, чтобы он был переименован в app-YYYY-MM-dd_HH-mm.log, но он не работает. Ниже приведены мои настройки 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.

Ответы [ 6 ]

3 голосов
/ 07 апреля 2011

Загрузите 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>
3 голосов
/ 25 марта 2011

Согласно log4j wiki :

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

API не упоминает об этом, но, возможно, в этом проблема?

3 голосов
/ 09 декабря 2010

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

Единственный способ получить то, что вы хотите, - это загрузить Дополнительный компонент Apache для log4j .


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

org.apache.log4j.DailyRollingFileAppender

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

1 голос
/ 26 октября 2016

Пожалуйста, убедитесь, что вы включили 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

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

0 голосов
/ 01 июня 2018
System.out.println("Loggers initiallization process started..");
 if(objApploger == null){
     objApploger = new AppLogger();
     String loglevel="ERROR";
     String logPath="E:\\Examples\\applicationLogs";
     String logMaxSize="50000";//in kbs
     int nmaxbackupIndex=20;
     String conversionPattern="%d{yyyy-MM-dd HH:mm:ss:SSS} %-5p  :: %m%n";       
     RollingFileAppender RFAppender= null;
     RFLog =Logger.getLogger("Log");
     RFLog.setLevel(Level.toLevel(loglevel));       
     Calendar cal= Calendar.getInstance();       
     String timeFrame=cal.get(5)+"_"+(cal.get(2)+1)+"_"+cal.get(1);
     logPath=logPath+"TestLog_"+timeFrame+".log";
     RFAppender = new RollingFileAppender(new PatternLayout(conversionPattern),logPath);
     RFAppender.setMaxBackupIndex(nmaxbackupIndex);
     RFAppender.setMaxFileSize(logMaxSize);
     RFLog.addAppender(RFAppender);
     System.out.println("Loggers initiallization process completed..");      
 } 
0 голосов
/ 03 декабря 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...