Spring Bootを使う時のログ設定方法とlogback.xmlを記述する際のガイドラインです。
Spring Bootのデフォルトログ設定
- コンソールにのみログが出力されます。
- ルートのログレベルは[INFO]です。
- ログの書式は 25.1 Log format に書かれています。
- ログ実装はLogbackが使用されます。
- Logback以外を使用したい場合は 66.2 Configure Log4j for logging を参考にpom.xmlを変更します。
ログ設定方法
Spring Bootでのログ設定方法は2つあります。
- プロパティで設定する
- application.ymlなどでプロパティを設定します。
設定は簡単ですが、設定できる内容は限られています。 - logback.xmlを記述する
- Logbackの通常の使い方と同じでクラスパスのルートにlogback.xmlを作成します。
プロパティ設定より面倒ですが、詳細な設定ができます。
デフォルトの設定ファイルをインクルードすることで記述内容は最小限にすることができます。
プロパティで変更できる設定
ログファイルの出力
以下のプロパティを設定ファイルなどで指定すると、ファイルにもログを出力するようになります。
- logging.file
- ログファイルのパスとファイル名を指定します。
ファイル名のみ指定した場合はカレントディレクトリに指定のファイル名で出力されます。 - logging.path
- ログファイルの出力先ディレクトリを指定します。ファイル名は`spring.log`になります。
この2つは同時に指定することはできないようで、同時に指定するとlogging.file
の指定のみ有効になります。
ログレベルの指定
プロパティlogging.level
以下にカテゴリ名を付けて指定します。
org.springframework
カテゴリのログレベルをWARN
に変更するには以下のように記述します。
logging.level.org.springframework: WARN
ルートログレベルの指定
ルートのログレベルは次のような書き方で指定します。
logging.level.: INFO
logging.level.root: INFO
logging.level.ROOT: INFO
logback.xmlを記述する
ここまでに書いたこと以外のカスタマイズをしたい場合にはlogback.xmlを記述する必要がありますが、全てを一から記述する必要はなく、Spring Bootのデフォルトのlogback設定をインクルードすると楽になります。
デフォルトのlogback設定は、spring-boot.<バージョン>.jarのorg.springframework.boot.logging.logback
の中にある以下のファイルです。
- base.xml
- デフォルト設定のルートになるファイルです。このファイルから下のファイルをインクルードしています。
- defaults.xml
- ログ書式などのプロパティが定義されています。
そのほか、Springから使用しているライブラリのログレベルが定義してあり、無駄なログが出力されないようにしています。 - console-appender.xml
- デフォルトのコンソール出力の設定です。
- file-appender.xml
- デフォルトのファイル出力の設定です。
logback.xmlを記述する方法はカスタマイズの内容により以下の3パターンがあります。
- デフォルト設定+αで追加の設定をする
- デフォルト設定を変更する
- 全て独自の設定にする
デフォルト設定+αで追加の設定をする
Applenerを追加したい場合など、デフォルト設定はそのままで追加の設定をしたい場合は、logback.xml
にbase.xml
をインクルードして、追加したい設定を記述します。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<!-- ここに追加したい設定を記述 -->
</configuration>
デフォルト設定を変更する
defaults.xml
に定義してあるプロパティの変更など、デフォルト設定を変更したい場合は、logback.xml
にbase.xml
の中身をコピーして、必要な変更を行います。
例えば、defaults.xmlに定義してあるログの書式(CONSOLE_LOG_PATTERN
とFILE_LOG_PATTERN
)を変更する場合は次のようにします。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="CONSOLE_LOG_PATTERN" value="..."/>
<property name="FILE_LOG_PATTERN" value="..."/>
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
全て独自の設定にする
好きなように書いてください。
参考
Spring Boot 公式ドキュメント
デフォルトのlogback設定ファイル(github)
Logback