我将 log4j2
<RollingFile>
配置为 TimeBasedTriggeringPolicy
的策略,通过该策略,我希望日志文件可以在每天 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 rollup 机制受到 Spring @Schedule 注解的影响,这很奇怪,不是吗?有人知道我怎样才能避免这种情况发生吗?谢谢!
您多久写一次日志记录?基于时间的触发策略仅在记录事件的过程中滚动。 cron 触发策略使用调度程序并从线程执行滚动,因此不需要记录事件来触发它。