我使用TimeBasedTriggeringPolicy策略配置了log4j2,我希望每天00:00可以将日志文件转换为zip文件。但它不会发生。
<RollingFile name="RollingFile" ignoreExceptions="false" fileName="${log.file.dir}/aaa.log" filePattern="${log.file.dir}/$${date:yyyy-MM}/aaa-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n" />
<Policies>
<OnStartupTriggeringPolicy />
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="128 MB" />
</Policies>
<DefaultRolloverStrategy max="1000"/>
</RollingFile>
当我添加如下所示的类时,系统每天在3:15创建一个zip文件。
@Component
public class Scheduler {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Scheduled(cron="0 15 3 * * ?") //3:15 every day
public void doSomething() {
logger.info("3:15 every day");
}
}
对于log4j2汇总机制受Spring @Schedule注释的影响,这是非常奇怪的,不是吗?谁知道我怎么能避免这种情况发生?谢谢!
答案 0 :(得分:1)
您多久写一次日志记录?基于时间的触发策略仅在记录事件的过程中翻转。 cron触发策略使用调度程序并从线程执行翻转,因此不需要记录事件来触发它。