要用log4j使用记录日志,日志路径有每日的日期,文件大小5M新增文件。
实现方式
log4j:
<appender name="serviceLog"
class="org.apache.log4j.RollingFileAppender">
<param name="Encoding" value="UTF-8" />
<param name="File" value="logs/service.log" />
<param name="Append" value="true" />
<param name="MaxBackupIndex" value="10" />
<param name="MaxFileSize" value="5MB" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yy/MM/dd HH:mm:ss:SSS}][%C-%L] %m%n" />
</layout>
</appender>
<root>
<level value="debug" />
<appender-ref ref="serviceLog" />
</root>
在内存总修改路径,加入日期:
String currentDateTem = CommonUtil.getCurrentDateString("yyyyMMdd");
if(currentDate.equals(currentDateTem)){
return;
}else{
currentDate = currentDateTem;
}
FileAppender appender = (FileAppender) LogManager.getLoggerRepository().getRootLogger().getAppender("serviceLog");
String fileName = appender.getFile();
String[] filepaths = fileName.split("/");
String newFileName = null;
// 如果路径是一层,将日期放在文件名前面,如果文件名有多层,将日期放在第一层的后面
if(filepaths.length == 1){
newFileName = currentDate + "/" + fileName;
}else{
Boolean flag = Boolean.FALSE;
for(String str : filepaths){
if(!flag){
newFileName = str + "/" + currentDate;
flag = Boolean.TRUE;
}else{
newFileName = newFileName + "/" + str;
}
}
}
appender.setFile(newFileName);
appender.activateOptions(); // 激活设置
最后一个激活设置很重要。
目前还有一个问题是会生成一个logs/service.log的空文件。目前还在查找原因。