log4j2 - DefaultRolloverStrategy для ежедневного приложения RollingFile, максимум не соблюдается - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь написать аппендиату с ежедневной скользящей политикой с 10 максимальными суммарными файлами независимо от дня .

Каждые 10 МБ он создает новый файл журнала и сохраняет его ссегодняшняя дата и индекс.

Это то, что у меня пока есть:

<RollingFile name="MyRollingFile" fileName="./log/logs.log"
            filePattern="./log/logs-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout>
                <pattern>%n%d{yy-MM-dd HH:mm:ss.SSS} [%p] %m</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="10" />
        </RollingFile>

Это неверно, поскольку при этом сохраняется максимум десять файлов каждый день но я хочу десять максимум файлов всего .Очевидно, я нахожу до 100 файлов через 10 дней.Я хочу ограничить максимальное количество файлов до 10. Как я могу это сделать?

1 Ответ

0 голосов
/ 03 февраля 2019

См. Операцию удаления для DefaultRolloverStrategy, задокументированную на http://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender. Короче говоря, вы хотите

<DefaultRolloverStrategy max="10">
  <Delete basePath="./logs">
      <IfFileName glob="*/logs-*.log" />
      <IfAccumulatedFileCount exceeds="10" />
    </Delete>
</DefaultRolloverStrategy>

Я также должен указать, что, поскольку у вас нет политики ролловера, основанной на временидата в вашем filePattern всегда будет содержать время, когда Log4j настроен, и индекс будет бесконечно увеличиваться.Вам нужно добавить либо TimeBasedTriggeringPolicy, либо CronTriggeringPolicy, чтобы дата менялась каждый день.

...