所有,似乎这个问题多次发布,但我仍然没有得到适当的解决方案来解决我的问题。我提到this和this,但它不起作用。
根据下面的属性文件,每次都会创建一个新文件,其中包含日期但我想创建一个格式低于日期的日志文件,需要在每次执行应用程序时生成,
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
答案 0 :(得分:3)
编辑 - 删除了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
文件的命名并不完美,但你明白了......
答案 1 :(得分:0)
执行此操作的一种简单方法是: 1.)在当前时间戳记的before挂钩中设置一个属性。
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy-hh-mm-ss");
System.setProperty("current.date.time", dateFormat.format(new Date()));
2。)使用此env变量属性创建记录器文件名 log4j.appender.file.File = $ {user.dir} / logs / Logger _ $ {current.date.time} .logs