LoginSignup
2
1

More than 1 year has passed since last update.

【Java】logback.xml でINFOログの圧縮

Posted at

概要

JavaのシステムログとしてINFOレベルのログも大量に出力する際、最大バイト数で区切りログファイルを圧縮し保存する。

修正前

logback.xml
...
    <appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>./logs/maker/system.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>./logs/maker/system.log.%d{yyyy-MM-dd}.gz</FileNamePattern>
            <!-- keep 7 days' worth of history -->
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <encoder>
            <charset>UTF-8</charset>
            <!-- <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</Pattern> -->
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5le %marker %lo{36} [%file:%line] - %msg %n</Pattern>
        </encoder>
    </appender>
...

修正後

logback.xml
....
    <appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>./logs/receiver/system.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>./logs/receiver/system.log.%d{yyyy-MM-dd}.%i.gz</FileNamePattern>
            <!-- keep 7 days' worth of history -->
            <maxHistory>7</maxHistory>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <!-- or whenever the file size reaches 1000MB -->
            <maxFileSize>1000MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <charset>UTF-8</charset>
            <!-- <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</Pattern> -->
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5le %marker %lo{36} [%file:%line] - %msg %n</Pattern>
        </encoder>
    </appender>
....

修正点(差分)

  • ファイル名に %i を追加。
  • 以下のコードを追加する。
logback.xml
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
    <maxFileSize>1MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>

$ du -sh ./*
540K ./system.log
548K ./system.log.2021-03-26.gz
544K ./system.log.2021-03-27.gz
544K ./system.log.2021-03-28.gz
548K ./system.log.2021-03-29.gz
552K ./system.log.2021-03-30.gz
552K ./system.log.2021-03-31.gz
548K ./system.log.2021-04-01.gz
296K ./system.log.2021-04-02.0.gz

参考:

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1