Log4j滚动文件appender:在文件名中包含时间戳

时间:2015-09-27 14:00:18

标签: java log4j

从当前 log4j 配置开始:

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=logs/file.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

如何添加日期或时间戳作为文件名的一部分?我尝试使用RollingDateFileAppender所述的MaxBackupIndex,但没有成功(还有一些属性,如MaxFileSize20121102143402781不受支持)。请注意,我希望以1351866842781(压缩)或Unix_Mills {{1}}格式包含日期。

3 个答案:

答案 0 :(得分:1)

您可以动态设置FileAppender

SimpleLayout layout = new SimpleLayout();           
FileAppender appender = new FileAppender(layout,"logname."+new Date().getTime(),false);
logger.addAppender(appender); 

答案 1 :(得分:0)

您可以使用DailyRollingFileAppender

log4j.rootLogger=debug, R
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.encoding=UTF-8
log4j.appender.R.File=logs/file.log
log4j.appender.R.DatePattern='-'yyyy-MM-dd
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p] [%t] [%c] %m%n

答案 2 :(得分:-3)

我对创建自定义布局感到非常兴奋,但事实证明PatternLayout已经包含了你需要的功能:-(你需要做这样的事情:

log4j.appender.R.layout.ConversionPattern="%d{yyyyMMddHHmmss} %p %t %c - %m%n

%d进入当前日期,大括号的内容为Simple Date Format,您可以自定义以满足您的需求。