我有一个名为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
。
答案 0 :(得分:3)
我假设你正在使用 log4j。版本1.2.16是最新版本。其源代码中不存在rollingPolicy
;仅在基于xml的配置的log4j.dtd
文件中。
获得您想要的工作的唯一方法是下载Apache extras companion for log4j。
最后,如果您不想使用附加功能,可以使用以下方法解决:
org.apache.log4j.DailyRollingFileAppender
此路径的减少是您的日志文件不会被gzip压缩。
答案 1 :(得分:3)
答案 2 :(得分:3)
下载log4j
extras jar文件并将其放入lib文件夹。
同时添加rollingPolicy
标记a:
<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 :(得分: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
答案 4 :(得分:0)
尝试从logs/
和.File
中删除.FileNamePattern
。我正在阅读代码,它看起来应该可行,但可能值得减少问题。
答案 5 :(得分:0)
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..");
}