У нас есть проблемы с нашей конфигурацией log4j2, которую мы взяли почти напрямую из https://www.baeldung.com/java-logging-rolling-file-appenders раздела 4.4:
<RollingFile name="roll-by-time-and-size"
fileName="target/log4j2/roll-by-time-and-size/app.log"
filePattern="target/log4j2/roll-by-time-and-size/app.%d{MM-dd-yyyy-HH-mm-ss.SSS}.%i.log.gz"
ignoreExceptions="false">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} %p %m%n</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="5 KB" />
<TimeBasedTriggeringPolicy interval="5000000" />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="." maxDepth="2">
<IfFileName glob="target/log4j2/roll-by-time-and-size/app.*.log.gz" />
<IfLastModified age="20d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
Если я уменьшу интервал, чтобы убедиться, что он Скользя на основе времени, это помещает правильное текущее время в имя файла. Но если я увеличу интервал до 5000 или чего-то еще и позволю попадать в SizeBasedTriggeringPolicy, отметка времени будет всегда одинаковой, и единственное, что изменяется в индексе в конце файла.
Это проблема для нас, потому что у нас есть задача cron, которая перемещает и переносит файлы в удаленную точку монтирования. Это означает, что в следующий раз, когда log4j достигнет политики запуска, основанной на размере, индекс будет сброшен до 1, отметка времени в имени файла будет такой же, даже если это не должно быть (почему ??), и наша задача cron попытается переместиться файл, но это будет то же имя файла, что и другой файл, который он уже переместил.
Использование последней версии весеннего загрузочного стартера log4j2 (на данный момент)
Это ошибка или предполагаемое поведение. Это не имеет особого смысла как предполагаемое поведение, но если так, что мы должны сделать, чтобы решить эту проблему?