如何配置Log4j2使其急切地滚动日志文件?

问题描述

我有一些日志文件,我想每天将它们滚动并存档为gzips。

相关配置如下:

<Appenders>
    <RollingFile name="MyLog"
                 fileName="${sys:log.dir}/mylog.log"
                 filePattern="${sys:log.dir}/mylog-%d{yyyy-MM-dd}.log.gz">
        <PatternLayout pattern="%d %p | %m | %c{1.} [%t]%n"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
        </Policies>
    </RollingFile>
</Appenders>

<Loggers>
    <Root level="INFO">
        <AppenderRef ref="MyLog"/>
    </Root>
</Loggers>

所以日志目录看起来像

mylog-2020-01-01.log.gz
mylog-2020-01-02.log.gz
mylog-2020-01-03.log.gz
mylog.log  // todays logs (let's say its the 4th Jan)

除了在一天结束时不急切地压缩日志文件外,它工作得很好,每当第二天的第一条日志语句被追加时,它就会被懒惰地压缩。

由于我要记录的内容(与客户端会话有关)的性质,这可能要等到深夜之后才会发生。可能要几个小时,甚至几天。

能够方便地在我感兴趣的日期ls的日志目录中的文件。目前,我不能可靠地执行此操作,因为昨天的日志可能会出现还没滚在这种情况下,mylog.log不是今天的日志,而是昨天的日志。

有没有一种方法可以配置它,以便它可以快速而不是延迟地滚动文件?

我可以添加一个cronjob来进行清理,但是我很犹豫,因为如果 日志在午夜左右进行,我不想弄乱log4j是的文件试图写。似乎容易出错。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)