从当前 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
,但没有成功(还有一些属性,如MaxFileSize
和20121102143402781
不受支持)。请注意,我希望以1351866842781
(压缩)或Unix_Mills {{1}}格式包含日期。
答案 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,您可以自定义以满足您的需求。