使用日期和时间戳为每次运行创建log4j日志文件

所有,似乎这个问题多次发布,但我仍然没有得到适当的解决方案来解决我的问题。 我提到了这个 ,但这不起作用。

根据下面的属性文件,每次都会创建一个新文件,其中包含日期但是我想创建一个格式低于日期的日志文件,需要在每次执行应用程序时生成,

logFileName_MM_DD_YY-HH_MM_SS.log (或)logFileName.log_YYYY_MM_DD_HH_MM_SS

# Root logger option log4j.rootLogger=INFO,file,stdout # Redirect log messages to console log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n # Direct log messages to a log file log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=.\\logs\\AppLog.log log4j.appender.file.DatePattern='.'yyyy-MM-dd log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

编辑 – 删除了DailyFileAppender建议。

您可以创建自己的FileAppender ,如下所示:

 public class NewFileOnRebootAppender extends FileAppender { public NewFileOnRebootAppender() { } @Override public void setFile(String file) { super.setFile(prependDate(file)); } private static String prependDate(String filename) { return System.currentTimeMillis() + "_" + filename; } } 

并像这样使用它:

 log4j.appender.fileOnReboot=yourPackage.NewFileOnRebootAppender log4j.appender.fileOnReboot.File=appLogOnReboot.log log4j.appender.fileOnReboot.layout=org.apache.log4j.PatternLayout log4j.appender.fileOnReboot.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

文件的命名并不完美,但你明白了……