Java Log4j滚动文件追加器:在文件名中包含时间戳

Java Log4j滚动文件追加器:在文件名中包含时间戳,java,log4j,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.lay

从当前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
(compact)或Unix\u Mills
1351866842781
的格式包含日期,您可以动态设置

SimpleLayout layout = new SimpleLayout();           
FileAppender appender = new FileAppender(layout,"logname."+new Date().getTime(),false);
logger.addAppender(appender); 
您可以动态设置

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

您可以使用DailRollingFileAppender

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

您可以使用DailRollingFileAppender

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

我对创建自定义布局非常兴奋,但PatternLayout已经包含了您需要的功能:-(您需要执行以下操作:

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

%d表示当前日期,花括号中的内容是a,您可以自定义它以满足您的需要。

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

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

%d表示当前日期,花括号中的内容为a,您可以自定义以满足您的需要。

附加的每日滚动将在应用程序跨越12:00 AM时追加时间戳。我希望第一个日志文件的格式始终相同。附加的每日滚动将在应用程序跨越12:00 AM时追加时间戳es 12:00 AM。我希望始终使用相同的格式,对于第一个日志文件也是如此。OP指的是日志文件的文件名。Not log-Entries.OP指的是日志文件的文件名。Not log-Entries。这将添加滚动日期。据我所知,OP还希望当前日志文件具有日期。(如果@vdenotaris错误,请纠正我)我查看了log4j API,但没有看到任何选项。您可以阅读此问题,这与op的要求相同。这将添加滚动日期。据我所知,op还希望当前日志文件有日期。(如果@vdenotaris错误,请纠正我)我看过log4j API,但没有看到任何选项。你可以阅读这个问题,这与你的op的要求相同。