由log4j2编写的部分.gz文件

时间:2017-01-04 06:26:11

标签: compression gzip rename log4j2 partial

我有以下日志配置。

    <RollingRandomAccessFile name="RollingReqAppender"
        fileName="/usr/test/req.log"
        filePattern="/usr/test/req.log.%d{yyyy-MM-dd-HH}.%i.gz"
        immediateFlush="true" append="true">
        <PatternLayout>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS Z}%m%n</Pattern>
        </PatternLayout>
        <Policies>
            <SizeBasedTriggeringPolicy size="500 MB"/>
            <TimeBasedTriggeringPolicy interval="1" modulate="true" />
        </Policies>
    </RollingRandomAccessFile>

当日志被翻转时(基于时间或大小),它被gzip压缩。压缩文件需要一些时间(几分钟到几分钟,具体取决于负载)。问题是文件被压缩到位,并且在进行gzip压缩时,部分gzip压缩文件存储在与最终gzip文件同名的同一文件夹中。例如:/usr/test/req.log.2017-01-03-02.1.gz

这会导致文件的使用者出现问题,该使用者会尝试处理部分文件。我希望能够区分部分gzip压缩文件和完整的gzip压缩文件。例如,我想设置一个配置,当文件被gzip压缩时,它使用不同的名称编写,例如:/usr/test/req.log.2017-01-03-02.1.temp.gz,一旦完全gzip,名称将更改为最终名称{{1} }

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

Log4j2目前的行为与您描述的不同。所以没有配置来实现这一目标。

请在Log4j2 JIRA问题跟踪器上提出功能请求。实现这一目标的最快方法是提供带有单元测试的补丁。

答案 1 :(得分:0)

此功能已添加到log4j2版本2.9.0 https://issues.apache.org/jira/browse/LOG4J2-1766