Filename with date in Log4j
I think you could just set a system property in code to contain the current date:
static{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.setProperty("current.date", dateFormat.format(new Date()));
}
Then in your log4j.xml file you can use the system property when specifying the log file name in the appender:
<appender name="MYAPPENDER" class="org.apache.log4j.FileAppender">
<param name="File" value="${user.home}/myApp-${current.date}.log" />
ETA: Now that I think about it you may have to setup the system property using a static initializer to make sure the property is set before log4j is configured.
you can manage this quickly and highly mantainable by just creating your own Appender.
Just create a Class like this :
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.log4j.FileAppender;
public class CustomFileAppender extends FileAppender{
@Override
public void setFile(String fileName)
{
if (fileName.indexOf("%timestamp") >= 0) {
Date d = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSS");
fileName = fileName.replaceAll("%timestamp", format.format(d));
}
super.setFile(fileName);
}
}
and place this in your properties:
log4j.appender.file=com.portima.filenet.brio.ops.tools.CustomFileAppender
log4j.appender.file.File=${log}/general.%timestamp.log
Now you can give any type of filename you want.
Try setting this in your log4j.properties
file:
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=example.log
much more information can be found here http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html