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