我有以下日志配置。
<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} }
我怎样才能做到这一点?
答案 0 :(得分:1)
Log4j2目前的行为与您描述的不同。所以没有配置来实现这一目标。
请在Log4j2 JIRA问题跟踪器上提出功能请求。实现这一目标的最快方法是提供带有单元测试的补丁。
答案 1 :(得分:0)
此功能已添加到log4j2版本2.9.0 https://issues.apache.org/jira/browse/LOG4J2-1766