Добрый день!
Столкнулся с непонятным поведением приложения.
Имеем такой аппендер logback:
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${logDir}/app.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${logDir}/app-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>500MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>10GB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread%X{cubaApp}%X{cubaUser}] %logger - %msg%n</pattern> </encoder> </appender>
Ожидаемое поведение:
- текущий лог пишется в файл app.log;
- в 0.00 накопленные за сутки записи из файла app.log сбрасываются в файл с именем, включающим дату за которую эти записи были накоплены, например (app-2020-05-14.0.log).
- если файл лога за сутки превышает 500 Мб, то он разбивается на отдельные файлы с именами app-2020-05-14.0.log, app-2020-05-14.1.log, app-2020-05-14.2.log и т.д.
- сохраняем записи за предыдущие 30 дней, но не более 10 Гб.
Фактическое поведение:
- каждые сутки в 00.00 создается файл app.log, в который начинает писаться текущий лог. Также имеется файл с записями за предыдущие сутки, назовем его app-2020-05-14.0.log.
- каждые сутки в 8.00 происходит автоматически перезапуск приложения (первый за эти сутки - это важно).
- после перезапуска файл app.log переписывается и в нем сохраняются записи только с момента перезапуска, т.е. с 8.00. Те записи, которые были в файле app.log c 0.00 до 8.00, сбрасываются в файл за предыдущее число (app-2020-05-14.0.log), полностью его переписывая.
Таким образом, мы теряем информацию за предыдущее число с 8.00 до 24.00. А записи за предыдущее число с 0.00 до 8.00 в свою очередь будут находиться в файле за пред-предыдущее число (app-2020-05-13.0.log).
При этом, последующие переподъемы приложения в эти же сутки, не приводят к подобным действиям. Запись корректно продолжается в файл app.log.
Выслушаю любые советы или мысли вслух.