log4j使用DailyRollingFileAppender对日志文件按天进行归档时,可以使用datePattern指定归档文件名格式. 如日志文件名为error.log,设置datePattern=yyyyMMdd,则归档文件名为error.logyyyyMMdd.
这样的归档文件名没有统一的后缀名,看起来不是很美观.于是我想,要是能将归档文件名设置为error_yyyyMMdd.log就好了.
分析DailyRollingFileAppender的源代码,我们重点关注两个函数
public void activateOptions() {
super.activateOptions();
if(datePattern != null && fileName != null) {
now.setTime(System.currentTimeMillis());
sdf = new SimpleDateFormat(datePattern);
int type = computeCheckPeriod();
printPeriodicity(type);
rc.setType(type);
File file = new File(fileName);
scheduledFilename = fileName+sdf.format(new Date(file.lastModified()));
} else {
LogLog.error("Either File or DatePattern options are not set for appender ["
+name+"].");
}
}
activeOptions函数,在初始化Appender时会被调用一次,设置scheduleFilename为当前日志文件名