Я пытаюсь объединить log4j2 SizeBasedTriggeringPolicy с CronTriggeringPolicy для пролистывания файла в полночь или каждые 20 МБ (каждую минуту или каждые 100 КБ для тестирования) следующим образом (см. TriggeringPolicies ):
<RollingFile name="RollingFile"
filePattern="target/logs/foobar-%d{yyyyMMdd-HHmmss}{UTC}.log">
<Layout type="PatternLayout" pattern="%date{DEFAULT} | %message%n" />
<Policies>
<SizeBasedTriggeringPolicy size="100KB" />
<CronTriggeringPolicy schedule="0 * * * * ? *" evaluateOnStartup="true" />
</Policies>
</RollingFile>
К сожалению, только CronTriggeringPolicy, кажется, работает в этой комбинации.Переброс не выполняется при достижении предела размера файла.Удаление «CronTriggeringPolicy» из конфигурации позволит перекатываться каждые 100 КБ, как и ожидалось.
Остерегайтесь того факта, что я не могу использовать TimeBasedTriggeringPolicy, потому что мне нужно иметь вторую точную дату в шаблоне имени файлано я хочу пролонгировать каждый день (или каждую минуту для тестирования здесь).
Является ли это (невозможность объединения CronTriggeringPolicy с другими политиками) известной ошибкой или ограничением при использовании CronTriggeringPolicy?
Я предоставил пример работающего проекта.https://github.com/FrVaBe/logging
Просто запустите основной класс и наблюдайте за файлами, которые генерируются в target/logs
.В настройках этого проекта они переворачиваются каждые 30 секунд, хотя они должны уже вращаться при достижении размера 100 КБ (что не будет длиться 30 секунд на моем компьютере).