我知道 DailyRollingFileAppender
会为我做这件事。但是当我的文件大小达到指定大小时,它不支持最大文件大小。
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="ALL" />
<param name="MaxFileSize" value="50KB" />
<param name="MaxBackupIndex" value="10" />
<param name="File" value="F:/logs/Testing/MyProject.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MMM-dd-yyyy HH:mm:ss:SSS} %-5p %m%n"/>
</layout>
</appender>
我想创建类似于 MyProject_12.12.2012.log
的文件名。
我的需要是,
我的日志文件需要支持最大文件大小
每个日志文件都有唯一的名称和日期。
希望我们的堆栈用户能够帮助我。
最佳答案
公共(public)空间有几种可用的实现,但实际上重写 RollingFileAppender 更容易
例如:
public class MyRollingAppender extends RollingFileAppender {
Long nextCheck=System.currentTimeMillis () - 1;
public static final SimpleDateFormat FORMAT=new SimpleDateFormat("yyyyMMdd");
String fileNameOriginal=null;
private void rollFile() {
this.closeFile();
GregorianCalendar calendar=new GregorianCalendar();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.DATE, 1);
nextCheck=calendar.getTimeInMillis();
this.setFile(fileNameOriginal);
this.activateOptions();
}
@Override
protected void subAppend(LoggingEvent event) {
Long n=System.currentTimeMillis ();
if (n>nextCheck) {
rollFile();
}
super.subAppend(event);
}
@Override
public void setFile(String file) {
fileNameOriginal=file;
super.setFile(file + FORMAT.format(new Date()) +".log");
}
}
您可以根据自己的具体需求进行调整
关于java - 如何在日志文件名中附加日期,例如 log_12.12.2012.log?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20539781/