On a special application event I need to roll log file and rename to specific file name that contains date and time.
This is function I use to roll file:
public void rollOver()
{
Enumeration el= Logger.getRootLogger().getAllAppenders();
while ( el.hasMoreElements() )
{
Appender a = (Appender) el.nextElement();
if (a instanceof RollingFileAppender)
{
((RollingFileAppender) a).rollOver();
}
}
}
This is log4j.properties configuration:
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=mylog.log
log4j.appender.logfile.Threshold=ALL
log4j.appender.logfile.MaxFileSize=100MB
log4j.appender.logfile.MaxBackupIndex=4
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %-4r [%t] %-5p %c %x - %m%n
Currently, after rollOver
I have file with name mylog.log.1
. How to make file to have name like mylog_YYYMMDD_HHmmSS.log
?