Log4j2 保持文件重命名相同的时间

问题描述 投票:0回答:1

我正在使用

log4j2 2.11
创建日志文件。我根据时间和大小轮换这些日志文件。基于时间的旋转效果很好,但是,当我根据大小旋转时,我遇到了一个奇怪的问题。

当我根据大小进行旋转时,我将日志文件压缩到以下名为 gzip 文件

${logdir}/${eventfilename}-%d{yyyyMMddHHmmss}{GMT+0}.log.gz
中,但是,
log.gz
文件始终以相同的时间结束,因此会无限地覆盖以前的压缩日志文件。我的理解是当前时间将用于 gzip 文件,而不是第一次抓取来创建 gzip 文件。

什么可能导致此问题,即我的基于大小的旋转文件始终以相同的名称结尾,并且没有更新到文件名中使用的当前时间?

请注意,这是我的完整配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="ALL" shutdownHook="disable">
    <Properties>
        <Property name="logdir">${env:DIR}/log</Property>
        <Property name="eventfilename">foo_event</Property>
        <Property name="errorfilename">foo_error</Property>
        <Property name="msgformat">%d{yyyy-MM-dd HH:mm:ss.SSS}{GMT+0}Z [%t] %-5level %logger{1} - %msg%n</Property>
    </Properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${msgformat}"/>
        </Console>
        <RollingFile name="ERROR_FILE" fileName="${logdir}/${errorfilename}.log"
            filePattern="${logdir}/${errorfilename}-%d{yyyyMMddHHmmss}{GMT+0}.log.gz">
            <PatternLayout charset="UTF-8" pattern="${msgformat}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${logdir}">
                    <IfFileName glob="${errorfilename}-*">
                        <IfAccumulatedFileSize exceeds="100 MB"/>
                    </IfFileName>
                </Delete>
            </DefaultRolloverStrategy>
            <ThresholdFilter level="WARN"/>
        </RollingFile>
        <RollingFile name="EVENT_FILE" fileName="${logdir}/${eventfilename}.log"
            filePattern="${logdir}/${eventfilename}-%d{yyyyMMddHHmmss}{GMT+0}.log.gz">
            <PatternLayout charset="UTF-8" pattern="${msgformat}"/>
            <Policies>
        <TimeBasedTriggeringPolicy interval="43200" modulate="false"/>
                <SizeBasedTriggeringPolicy size="1 MB"/>
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${logdir}">
                    <IfFileName glob="${eventfilename}-*">
                        <IfAccumulatedFileSize exceeds="100 MB"/>
                    </IfFileName>
                </Delete>
            </DefaultRolloverStrategy>
            <ThresholdFilter level="TRACE"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="foo.utils.FooLogger" level="TRACE"
            additivity="false">
            <AppenderRef ref="ERROR_FILE"/>
            <AppenderRef ref="EVENT_FILE"/>
        </Logger>
        <Logger name="foo.utils.foo.FooPathUtils" level="INFO"
            additivity="false">
            <!-- Change level to debug to log java path info at startup -->
            <AppenderRef ref="ERROR_FILE"/>
            <AppenderRef ref="EVENT_FILE"/>
        </Logger>        
        <Logger name="foo" level="INFO" additivity="false">
            <AppenderRef ref="ERROR_FILE"/>
            <AppenderRef ref="EVENT_FILE"/>
        </Logger>    
        <Root level="TRACE">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>
java configuration log4j log4j2 log-rotation
1个回答
0
投票

我也有同样的问题,但没有找到解决该问题的指导。

© www.soinside.com 2019 - 2024. All rights reserved.