Я использую Logback с TimeBasedRollingPolicy
, который прокручивает файлы раз в час:
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${serverpath}/logs/history-debug/debug.%d{yyyy-MM-dd_HH}.log.zip</fileNamePattern>
<maxHistory>168</maxHistory> <!--7Days-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
Иногда исходные (еще не свернутые) лог-файлы в моем случае могут вырасти очень большими (несколько ГБ). Теперь я хотел бы добавить SizeBasedTriggeringPolicy
в конфигурацию, чтобы дополнительно свернуть файл, когда исходный файл журнала превышает определенный предел (например, 5 ГБ). Таким образом, файлы журналов следует обновлять один раз в час, за исключением случаев, когда файл становится слишком большим, и тогда его следует обновлять раньше.
Я попробовал это:
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${serverpath}/logs/history-debug/debug.%d{yyyy-MM-dd_HH}.%i.log.zip</fileNamePattern>
<maxHistory>168</maxHistory> <!--7Days-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5GB</maxFileSize>
</triggeringPolicy>
Но затем я получаю сообщение об ошибке, поскольку %i
несовместимо с TimeBasedRollingPolicy.
Я также пробовал SizeAndTimeBasedRollingPolicy
, но он только разбивает перевернутые файлы на более мелкие части, но не смотрит на размер исходного файла журнала.