オレオレ設定だけど、いつも調べて忘れるのでまとめておく。
<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
ログを生成したソースの行番号