簡體   English   中英

在log4j中使用FileNamePattern,RollingFileAppender

[英]Using FileNamePattern, RollingFileAppender in log4j

我有一個名為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

我假設你使用log4j。 版本1.2.16是最新版本。 rollingPolicy在其源代碼中不存在; 僅在log4j.dtd文件中進行基於xml的配置。

你能得到你想要的工作的唯一方法是下載log4j的Apache extras伴侶


最終如果您不想使用附加功能您可以使用以下方法解決:

org.apache.log4j.DailyRollingFileAppender

減少此路徑是您的日志文件不會被gzip壓縮。

根據log4j維基

請注意,TimeBasedRollingPolicy只能使用xml配置,而不能使用log4j.properties配置

API沒有提到這一點,但也許這就是問題所在?

下載log4j extras 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>

請檢查您是否已包含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

有關房產的更多詳情,請點擊此處

嘗試從.File.FileNamePattern刪除logs/ 我正在閱讀代碼,它看起來應該可行,但可能值得減少問題。

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

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..");      
 } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM