ログ
Spring Boot には、通常 Spring Framework の spring-jcl
モジュールによって提供される Commons Logging API を除いて、必須のログ依存関係はありません。Logback (英語) を使用するには、それと spring-jcl
をクラスパスに含める必要があります。これを行うための推奨される方法は、スターターを使用することです。スターターはすべて spring-boot-starter-logging
に依存します。Web アプリケーションの場合は、ロギングスターターに推移的に依存するため、spring-boot-starter-web
のみが必要です。Maven を使用する場合、次の依存関係によってログが追加されます。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring Boot には、クラスパスのコンテンツに基づいてロギングを構成しようとする LoggingSystem
抽象化があります。Logback が利用可能な場合、それが最初の選択肢です。
ロギングに加える必要がある唯一の変更がさまざまなロガーのレベルを設定することである場合、次の例に示すように、"logging.level" プレフィックスを使用して application.properties
でそれを行うことができます。
プロパティ
YAML
logging.level.org.springframework.web=debug
logging.level.org.hibernate=error
logging:
level:
org.springframework.web: "debug"
org.hibernate: "error"
logging.file.name
を使用して、(コンソールに加えて) ログが書き込まれるファイルの場所を設定することもできます。
ロギングシステムのよりきめ細かい設定を構成するには、対象の LoggingSystem
でサポートされているネイティブ構成形式を使用する必要があります。デフォルトでは、Spring Boot はシステムのデフォルトの場所(Logback の場合は classpath:logback.xml
など)からネイティブ構成を選択しますが、logging.config
プロパティを使用して構成ファイルの場所を設定できます。
ロギング用に Logback を構成する
application.properties
で実現できる以上のカスタマイズを logback に適用する必要がある場合は、標準の logback 構成ファイルを追加する必要があります。logback が見つけられるように、クラスパスのルートに logback.xml
ファイルを追加できます。Spring Boot Logback 拡張を使用する場合は、logback-spring.xml
を使用することもできます。
Logback のドキュメントには、構成 (英語) を詳細にカバーする専用セクションがあります (英語) 。 |
Spring Boot は、独自の構成で included
にできる多数の logback 構成を提供します。これらのインクルードは、特定の一般的な Spring Boot 規則を再適用できるように設計されています。
以下のファイルが org/springframework/boot/logging/logback/
で提供されています。
defaults.xml
- 変換ルール、パターンプロパティ、一般的なロガー構成を提供します。console-appender.xml
-CONSOLE_LOG_PATTERN
を使用してConsoleAppender
を追加します。file-appender.xml
- 適切な設定でFILE_LOG_PATTERN
およびROLLING_FILE_NAME_PATTERN
を使用してRollingFileAppender
を追加します。
さらに、以前のバージョンの Spring Boot との互換性のために、レガシー base.xml
ファイルが提供されています。
典型的なカスタム logback.xml
ファイルは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
<logger name="org.springframework.web" level="DEBUG"/>
</configuration>
logback 構成ファイルは、LoggingSystem
が作成するシステムプロパティを利用することもできます。
${PID}
: 現在のプロセス ID。${LOG_FILE}
:logging.file.name
が Boot の外部構成で設定されたかどうか。${LOG_PATH}
:logging.file.path
(ログファイルが存在するディレクトリを表す)が Boot の外部設定で設定されたかどうか。${LOG_EXCEPTION_CONVERSION_WORD}
:logging.exception-conversion-word
が Boot の外部構成で設定されたかどうか。${ROLLING_FILE_NAME_PATTERN}
:logging.pattern.rolling-file-name
が Boot の外部構成で設定されたかどうか。
また、Spring Boot は、カスタム Logback コンバーターを使用して、コンソール上に(ログファイルではなく)素敵な ANSI カラーターミナル出力を提供します。例については、defaults.xml
構成の CONSOLE_LOG_PATTERN
を参照してください。
Groovy がクラスパス上にある場合、logback.groovy
で Logback も構成できるはずです。存在する場合、この設定が優先されます。
Spring 拡張は、Groovy 構成ではサポートされていません。logback-spring.groovy ファイルは検出されません。 |
ファイルのみの出力用に Logback を構成する
コンソールロギングを無効にし、出力のみをファイルに書き込む場合は、次の例に示すように、console-appender.xml
ではなく file-appender.xml
をインポートするカスタム logback-spring.xml
が必要です。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
次の例に示すように、logging.file.name
を application.properties
または application.yaml
に追加する必要もあります。
プロパティ
YAML
logging.file.name=myapplication.log
logging:
file:
name: "myapplication.log"
ロギング用に Log4j を構成する
Spring Boot は、クラスパス上にある場合、ロギング構成用に Log4j 2 [Apache] (英語) をサポートします。依存関係を組み立てるためにスターターを使用する場合は、Logback を除外し、代わりに Log4j 2 を含める必要があります。スターターを使用しない場合は、Log4j 2 に加えて (少なくとも) spring-jcl
を提供する必要があります。
推奨されるパスは、多少のギミックが必要ですが、スターターを経由することです。以下の例は、Maven でスターターを設定する方法を示しています。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
Gradle は、スターターをセットアップするためのいくつかの異なる方法を提供します。1 つの方法は、モジュールの交換 (英語) を使用することです。これを行うには、次の例に示すように、Log4j 2 スターターへの依存関係を宣言し、デフォルトのロギングスターターが発生した場合は Log4j2 スターターに置き換える必要があることを Gradle に通知します。
dependencies {
implementation "org.springframework.boot:spring-boot-starter-log4j2"
modules {
module("org.springframework.boot:spring-boot-starter-logging") {
replacedBy("org.springframework.boot:spring-boot-starter-log4j2", "Use Log4j2 instead of Logback")
}
}
}
Log4j スターターは、共通のロギング要件(Tomcat で java.util.logging を使用するが Log4j 2 を使用して出力を構成するなど)の依存関係を収集します。 |
java.util.logging を使用して実行されるデバッグロギングが Log4j 2 にルーティングされるようにするには、java.util.logging.manager システムプロパティを org.apache.logging.log4j.jul.LogManager に設定して、JDK ロギングアダプター [Apache] (英語) を構成します。 |
YAML または JSON を使用して Log4j 2 を構成する
デフォルトの XML 構成形式に加えて、Log4j 2 は YAML および JSON 構成ファイルもサポートしています。別の構成ファイル形式を使用するように Log4j 2 を構成するには、次の例に示すように、適切な依存関係をクラスパスに追加し、選択したファイル形式に合わせて構成ファイルに名前を付けます。
フォーマット | 依存関係 | ファイル名 |
---|---|---|
YAML |
|
|
JSON |
|
|