1

こんにちは、アプリケーションの開始時または新しい日である場合にログをロールし、構成ファイルによって 30 日または 1 か月間 (30 ファイルではなく) 履歴を保持するように設定する方法があります。数時間探しましたが、何も見つかりませんでした。おそらくこの方法は存在しないため、記述する必要があります。

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d [%thread] %-5level %logger{50} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/logs/server.log</file>
        <encoder>
            <pattern>%d [%thread] %-5level %logger{50} - %msg%n
            </pattern>
        </encoder>

        <!-- Join this time based rolling with-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/logs/server.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
            <!-- Mean 30 days not 30 files -->
            <maxHistory>30</maxHistory> 
        </rollingPolicy>

        <!-- New start baser Rolling-->
        ...
    </appender>

    <root level="INFO">
    <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

</configuration>
4

1 に答える 1

2

この質問は複製され、https://stackoverflow.com/a/30801658/844648によって回答されています

私はついにそれを理解します。サイズ、時間、起動で転がすことができます。ここに解決策があります:

1番目に独自のクラスを作成します

@NoAutoStart
public class StartupSizeTimeBasedTriggeringPolicy<E> extends SizeAndTimeBasedFNATP<E> {

    private boolean started = false;

    @Override
    public boolean isTriggeringEvent( File activeFile, E event ) {
        if ( !started ) {
            nextCheck = 0L;
            return started = true;
        }

        return super.isTriggeringEvent( activeFile, event );
    };
}

2番目のロックバックの構成

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOGS_DIR}/${FILE_NAME}.log</file>
    <encoder>
        <pattern>%d [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOGS_DIR}/${FILE_NAME}.%d{yyyy-MM-dd}_%d{HHmmss,aux}.%i.log.zip</fileNamePattern>
        <maxHistory>30</maxHistory>
        <TimeBasedFileNamingAndTriggeringPolicy class="my.StartupSizeTimeBasedTriggeringPolicy">
            <MaxFileSize>250MB</MaxFileSize> 
        </TimeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>
于 2015-06-12T11:23:13.030 に答える