问题
All, it seems like this question is posted multiple times but still i haven't got proper solution for my problem. I referred this and this but its not working.
As per below property file, a new file is created everytime with date in it But I want to create a log file with below format and need to be generated each and everytime my application is executed,
logFileName_MM_DD_YY-HH_MM_SS.log (or) 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
回答1:
EDIT - removed the DailyFileAppender suggestion.
You can create your own FileAppender, like this:
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;
}
}
And use it like this:
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
The naming of the file is not perfect, but you get the idea..
来源:https://stackoverflow.com/questions/31360185/creating-log4j-log-file-for-each-run-with-date-and-timestamp