DefaultRolloverStrategy In log4j2 - PullRequest
       18

DefaultRolloverStrategy In log4j2

0 голосов
/ 24 августа 2018

У меня проблемы с настройкой DefaultRolloverStrategy для log4j2.xml для выполнения следующих действий: -

Убедитесь, что сохранены ТОЛЬКО последние 4 файла журнала, а старые должны быть удалены. Итак, будьте ясны, последние 4 файла журнала могут быть за несколько дней или в один и тот же день, поэтому последние 4 файла журнала могут иметь одну и ту же дату или охватывать разные даты.

Ниже приведено содержимое log4j2.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <Configuration>

        <Appenders>
            <!-- Console Appender -->
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{DEFAULT} [%t] %-5level %logger{36} - %msg%n" />
            </Console>
            <!-- Rolling File Appender -->
            <RollingFile name="File" fileName="app_log.log"
                filePattern="app_log-%d{yyyy-MM-dd}.%i.log">
                <PatternLayout pattern="%d{DEFAULT} [%t] %-5level %logger{36} - %msg%n" />
                <Policies>
                    <TimeBasedTriggeringPolicy />
                    <SizeBasedTriggeringPolicy size="2 KB" />
                </Policies>

                <DefaultRolloverStrategy>
                    <Delete basePath="" maxDepth="1">
                        <IfFileName glob="app_log*.txt">
                            <IfAny>
                                <IfAccumulatedFileSize exceeds="5 KB" />
                                <IfAccumulatedFileCount exceeds="4" />
                            </IfAny>
                        </IfFileName>
                    </Delete>
                </DefaultRolloverStrategy>

                </RollingFile>
        </Appenders>

        <Loggers>

            <Logger name="com.app.utilities" level="info" additivity="true">
                <AppenderRef ref="File" />
            </Logger>

            <Root level="debug">
                <AppenderRef ref="Console" />
            </Root>

        </Loggers>
    </Configuration>

Я запускаю свое приложение, как показано ниже

java  -Dlog4j.configurationFile=./app-log4j2.xml -jar application.jar

Журнал генерируется в том же каталоге, откуда вызывается вышеуказанная команда.

Ниже приведен пример истории файлов журнала: -

File Name                   Date Modified

app_log.log                 8/27/2018 2:25 PM
app_log-2018-08-27.2.log    8/27/2018 2:25 PM
app_log-2018-08-27.1.log    8/27/2018 2:11 PM
app_log-2018-08-26.5.log    8/26/2018 2:01 PM
app_log-2018-08-26.4.log    8/26/2018 2:00 PM
app_log-2018-08-26.3.log    8/26/2018 1:58 PM
app_log-2018-08-26.2.log    8/26/2018 1:57 PM
app_log-2018-08-26.1.log    8/26/2018 1:56 PM

Кажется, что "DefaultRolloverStrategy" не имеет никакого эффекта.

Я предполагаю, что моя конфигурация неверна. Тем не менее, я был бы очень признателен за предложения чтобы исправить это, пожалуйста.

Кроме того, если требование изменилось так, что файлы журналов, превышающие 20 дней, должны быть удалены. Как это могло быть достигнуто.

Заранее большое спасибо за помощь

Пит

1 Ответ

0 голосов
/ 24 августа 2018

Взгляните на следующую строку:

<IfFileName glob="app_log*.txt">

Но ваши файлы журналов не заканчиваются на .txt!См .:

File Name                   Date Modified

app_log.log                 8/27/2018 2:25 PM

Вам, вероятно, нужно изменить его на:

<IfFileName glob="app_log*.log">

Это то, что действительно выскакивает из меня.Возможно, вам придется сделать еще несколько твиков, но сначала попробуйте.

...