Logbackでファイルにログを吐く時の基本設定


オレオレ設定だけど、いつも調べて忘れるのでまとめておく。


<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%date{yyyy-MM-dd HH:mm:ss} [%thread] %level %logger{0} - %msg \(%file:%line\)%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
</appender>

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log.tar.gz</fileNamePattern>
        <maxHistory>7</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>%d{yyyy-MM-dd'T'HH:mm:ss'Z'} - %m%n</pattern>
    </encoder>
</appender>

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

<logger name="FILE" additivity="false">
    <level value="INFO" />
    <appender-ref ref="FILE" />
</logger>

要素について

  • appendar
    appendarの指定.

  • file
    ファイルの保存先の指定.

  • rollingPolicy
    RollingFileAppendarの時指定する. TimeBasedRollingPolicyはその名の通り時間指定でrollingする。どのタイミングかはその後のfileNamePatternで指定できる.

  • fileNamePattern
    %dオプションで指定した粒度でrollingする. 拡張子に.zipや.tar.gzを指定するとrollingの際に同時に圧縮処理も行われる.

  • maxHistory
    ファイルを保存する最大数。これを越えたファイルはrolling時に削除される.

  • encoder.pattern
    1行の出力内容を指定する.

  • filter
    ログメッセージの出力条件をフィルタする設定.

PatternLayoutについて

  • %d %date
    日付のフォーマット.%d{ISO8601}のようにも書ける. {pattern, timezone}のように第二引数をとることが出来る. {yyyy-MM-dd HHss.SSS'Z',UTC}のように指定する.

  • %m %msg %message
    ログメッセージ.

  • %n
    改行コード

  • %t %thread
    ログ出力スレッドの名前

  • %p %le %level
    ログレベル

  • %c %lo %logger
    カテゴリ名. {}の中の数字で, パッケージの階層表示の出力を指定する. %c{1}だとcom.example.loggingの「logging」だけの出力になる.

  • %F %file
    ログを生成したソースファイル名

  • %L %line
    ログを生成したソースの行番号