Logback Rolling Policy

1 min read

시간, 사이즈로 로그 파일 나누기

1.1.7 이전 버전:

예전에는 TimeBasedRollingPolicySizeAndTimeBasedFNATP를 적용해서 maxFileSize 옵션을 적용했었다. 현재 이 방법은 공식 문서에서 삭제되었으나, 작동은 한다. %d%i는 필수로 지정해야 한다.

...
  <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>mylog.txt</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>10MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
  </appender>
...

현재:

SizeAndTimeBasedRollingPolicymaxFileSize 옵션으로 각 파일당 사이즈를 지정하도록 수정되었다. SizeAndtimeBasedRollingPolicy.java를 보면 SizeAndTimeBasedFNATP를 변수로 가지고 있다.

<configuration>
  <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>mylog.txt</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
       <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
       <maxFileSize>100MB</maxFileSize>
       <maxHistory>60</maxHistory>
       <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>


  <root level="DEBUG">
    <appender-ref ref="ROLLING" />
  </root>

</configuration>

© 2023 Raegon Kim