Log4j2 сохраняет то же время для переименования файлов - PullRequest
0 голосов
/ 24 апреля 2018

Я использую 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>
...