Подтвердить что ты не робот

Log4j2 - ограничение количества файлов журнала

У меня есть следующий файл log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
  <appenders>
    <RollingFile name="testLog" fileName="test.log" filePattern="" append="false">
      <PatternLayout pattern="[%t] %-5level - %msg%n%n"/>
    <SizeBasedTriggeringPolicy size="5mb" />
    </RollingFile>
  </appenders>
  <loggers>
    <logger name="TestsLogger" level="trace" additivity="false">
      <appender-ref ref="testLog"/>
    </logger>
    <root level="debug">
      <appender-ref ref="testLog"/>
    </root>
  </loggers>
</configuration>

Как изменить эту конфигурацию таким образом, чтобы

  • Вместо того, чтобы перезаписывать один и тот же файл журнала снова и снова, новый файл создается после достижения предела 5mb. Было бы неплохо иметь что-то вроде test1.log, test2.log и т.д.
  • Как ограничить количество файлов с частичным журналом, созданных в 1.? Я хочу достичь следующей схемы:

    creating test1.log [present log files: test1.log]
    test1.log - 5mb limit reached
    creating test2.log [present log files: test1.log, test2.log]
    test2.log - 5mb limit reached
    creating test3.log [present log files: test2.log, test3.log]
    test3.log - 5mb limit reached
    creating test4.log [present log files: test3.log, test4.log]
    and so on
    

Кто-нибудь знает, как добиться чего-то подобного? Конечно, было бы неплохо, если бы что-то подобное было возможно только с log4j2. Но, возможно, есть способ объединить log4j2 с какой-то внешней программой, которая будет работать вместе с основным приложением Java и удалять лишние файлы журналов, сохраняя при этом два последних файла журнала. Поэтому, если у кого-то есть хотя бы предложение на 1., возможно, это уже то, что я ищу. Потому что я могу написать программу для 2-й части. Конечно, было бы здорово, если бы вторая часть могла быть выполнена и с log4j2.

4b9b3361

Ответ 1

Я никогда не использовал log4j2, но документация RollingFileAppender дает вам много примеров конфигурации.

Интересный для вас швы, чтобы быть чем-то вроде этого (используя DefaultRolloverStrategy):

<RollingFile name="RollingFile" fileName="logs/app.log"
             filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
  <PatternLayout>
    <pattern>%d %p %C{1.} [%t] %m%n</pattern>
  </PatternLayout>
  <Policies>
    <SizeBasedTriggeringPolicy size="5 MB"/>
  </Policies>
  <DefaultRolloverStrategy max="20"/>
</RollingFile>