Как действительно работает атрибут Log4j2 DefaultRolloverStrategy max?
Я настроил RollingRandomAccessFileAppender
только с установкой OnStartupTriggeringPolicy
, но когда я установил максимальный атрибут DefaultRolloverStrategy
к некоторому числу, журналы продолжают генерировать минус эту сумму на неопределенный срок.
Здесь мой log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingRandomAccessFile
name="RollingRAF"
fileName="logs/app.log"
filePattern="logs/app-%d{[email protected]}.log">
<PatternLayout>
<Pattern>%d %p %c{1.} %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="5"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Logger name="myLogger" level="warn">
<AppenderRef ref="RollingRAF"/>
</Logger>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Это потому, что у меня нет итератора в моем шаблоне имен?
Это потому, что моя точность имени файла установлена на секунды?
Это потому, что у меня есть только OnStartupTriggeringPolicy
?
Или что здесь происходит?
Моя цель состояла в том, чтобы настроить скользящую конфигурацию, которая будет регистрировать последние 5 запусков приложений.
Ответы
Ответ 1
DefaultRolloverStrategy будет использовать шаблон даты, указанный в filePattern, если указан параметр TimeBasedTriggeringPolicy. Чтобы использовать атрибут max
, укажите шаблон %i
в файлеPattern и добавьте <SizeBasedTriggeringPolicy size="20 MB" />
в политики опрокидывания. (Или какой-то другой размер, конечно.)
Значение max в <DefaultRolloverStrategy max="5"/>
будет гарантировать, что в течение одного и того же периода опрокидывания (одна секунда для вас, так как вы указали шаблон даты %d{[email protected]}
) не более 5 файлов будут созданы, когда опрокидывание на основе размера был вызван.
Это более полезно, если ваше окно опрокидывания больше, например, каждый день переходить на новую папку и внутри этой папки, гарантировать, что не более 5 файлов создаются с максимальным размером = 20 МБ.
Update:
Log4j 2.5 добавила возможность настраивать пользовательские действия удаления. Из коробки вы можете удалять файлы по возрасту, количеству или количеству занимаемого места на диске (накопленный размер файла).