Как игнорировать FileNamePattern при удалении журналов длиннее, чем MaxHistory? - PullRequest
0 голосов
/ 22 марта 2019

Поскольку я не могу найти ответ на этот вопрос, прошу прощения, если он рассматривается как дубликат некоторых других вопросов.

Я использую SiftingAppender для создания разных файлов журналов для каждой службы (3 службы) и TimeBasedRollingPolicy, поэтому перенос файлов журналов происходит каждый день.

LogDiscriminator.java создает log_discriminator для политики SiftingAppender для входа в систему. Два случая здесь:

  • Случай 1 (LogDiscriminator.java) - logback может удалять файлы журнала через 10 дней (maxHistory установлен на 10)
  • Случай 2 (LogDiscriminator.java) - добавлен UUID (только для расхождения между экземплярами одной и той же службы - например, 2 экземпляра ser_1), logback не может удалить файлы журнала через 10 дней.

Пожалуйста, возможно ли удалить журналы старше MaxHistory только по дате? Я имею в виду независимо от имени (случай 2), logback сможет удалить файлы журнала. Есть ли другой способ добиться этого?

Logback

<?xml version="1.0"?>
<configuration>
    <!-- ... -->
    <appender name="MAIN" class="ch.qos.logback.classic.sift.SiftingAppender">
        <discriminator>
            <key>log_discriminator</key>
            <defaultValue>LOG_FILE_KEY_UNKNOWN</defaultValue>
        </discriminator>
        <sift>
            <appender name="FILE-${log_discriminator}" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${log.folder}/${log_discriminator}.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <!-- daily roll-over -->
                    <FileNamePattern>${log.folder}/${log_discriminator}.%d{yyyy-MM-dd}.log</FileNamePattern>
                    <maxHistory>10</maxHistory>
                    <cleanHistoryOnStart>true</cleanHistoryOnStart>
                </rollingPolicy>
                <encoder>
                    <pattern>${log.pattern}</pattern>
                </encoder>
                <prudent>true</prudent>
            </appender>
        </sift>
    </appender>
    <!-- ... -->
</configuration>

LogDiscriminator.java

public class LogDiscriminator {
    ...
    public static void setLogFileType(String appType) {
        // Case 1 - logback was able to delete after 10 days of log 
        // MDC.put("log_discriminator", appType); // e.g. ser_1, ser_2 or ser_3 (3 services)

        // Case 2 - added UUID (just to distingush between instances of the same app - e.g. 2 instances of ser_1), logback is not able to delete
        MDC.put("log_discriminator", String.format("%s_%s", appType, UUID.randomUUID().toString()));
    }
    ...
}
...