1

我用 TimeBasedTriggeringPolicy 的 Policy 配置了 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 注释的影响,这很奇怪,不是吗?任何人都知道我怎样才能避免这种情况发生?谢谢!

4

1 回答 1

1

你多久写一次日志记录?基于时间的触发策略仅在记录事件的过程中翻转。cron 触发策略使用调度程序并从线程执行翻转,因此不需要记录事件来触发它。

于 2016-03-19T07:01:18.343 回答