我设置了一个Apache ActiveMQ Artemis代理,我想每天创建一个新的artemis.log
文件。
我在logging.properties
配置了PeriodicRotatingFileHandler
,但它无法正常工作。
它会创建文件名中包含日期的日期(正确(的日期,但不为随后的其他日期创建日志文件。它仅创建具有重新启动代理服务的日期的新日志文件。
有没有人举例说明日志记录属性应该是什么样子来实现我的计划?
PeriodicRotatingFileHandler
仅在写入新日志记录时检查时间:PeriodicRotatingFileHandler.java#L115
PeriodicRotatingFileHandler
类可以扩展,即使用计时器:
public class AutoPeriodicRotatingFileHandler extends PeriodicRotatingFileHandler {
private Timer timer = new Timer();
private long period = 5 * 60 * 1000;
private ExtLogRecord timerLogRecord = new ExtLogRecord(Level.ALL, "TIMER", AutoPeriodicRotatingFileHandler.class.getName());
public AutoPeriodicRotatingFileHandler() {
initialize();
}
//TODO Add required constructors here
public AutoPeriodicRotatingFileHandler(final File file, final String suffix, final boolean append, final int period) throws FileNotFoundException {
super(file, suffix, append);
this.period = period;
initialize();
}
private void initialize() {
timer.schedule(new TimerTask() {
@Override
public void run() {
timerLogRecord.setMillis(System.currentTimeMillis());
preWrite(timerLogRecord);
}
}, 0, period);
}
@Override
public void close() throws SecurityException {
timer.cancel();
super.close();
}
}