Help us understand the problem. What is going on with this article?

Spring Bootのログ設定を変更する

More than 3 years have passed since last update.

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に変更するには以下のように記述します。

application.yml
logging.level.org.springframework: WARN

ルートログレベルの指定

ルートのログレベルは次のような書き方で指定します。

application.yml
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.xmlbase.xmlをインクルードして、追加したい設定を記述します。

logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <!-- ここに追加したい設定を記述 -->
</configuration>

デフォルト設定を変更する

defaults.xmlに定義してあるプロパティの変更など、デフォルト設定を変更したい場合は、logback.xmlbase.xmlの中身をコピーして、必要な変更を行います。

例えば、defaults.xmlに定義してあるログの書式(CONSOLE_LOG_PATTERNFILE_LOG_PATTERN)を変更する場合は次のようにします。

logback.xml
<?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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした