如何根据时间而不是Log4j中的大小旋转日志文件?
问题内容:
我将Log4j与结合使用,RollingFileAppender
以基于大小创建日志轮换。
如何配置它以便在轮换之前一定 时间 记录到每个文件?
例如,使每个日志文件包含一个小时的日志,并在每个小时的顶部轮换显示?
我使用Properties
对象(而不是log4j.properties
文件)在Java中以编程方式配置Log4j
问题答案:
您可能要使用DailyRollingFileAppender。例如,要每小时滚动一次,可以使用DatePattern为'.'yyyy- MM-dd-HH
。对于log4j.properties文件:
log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH
...
或针对您的程序化配置:
DailyRollingFileAppender appender = new DailyRollingFileAppender();
appender.setDatePattern("'.'yyyy-MM-dd-HH");
Logger root = Logger.getRootLogger();
root.addAppender(appender);
不幸的是,使用DailyRollingFileAppender意味着您不能限制文件大小-如果在给定的滚动期内有大量日志,这可能会出现问题。