第1章 Quarkus を使用したロギングの設定
アプリケーション開発者は、ロギングを使用して、アプリケーションの実行中に発生するイベントに関するメッセージを表示および記録できます。ログメッセージは、開発およびテスト中にアプリケーションをデバッグしたり、実稼働環境でアプリケーションを監視したりするために使用できる情報を提供します。
前提条件
OpenJDK 11 または 17 をインストールし、
JAVA_HOME
環境変数を設定して Java SDK の場所を指定している。- Red Hat OpenJDK をダウンロードするには、Red Hat カスタマーポータル にログインし、ソフトウェアのダウンロード に 移動します。
Apache Maven 3.8.x がインストールされている。x は 6 以降です。
- Maven は Apache Maven Project の Web サイトからダウンロードできます。
Quarkus Maven プロジェクトを作成している。
- Maven を使用した Quarkus アプリケーションの作成方法に関する詳細は、Apache Maven を使用した Quarkus アプリケーションの開発およびコンパイル を参照してください。
1.1. JBoss LogManager およびサポートされているロギングフレームワーク
Quarkus は JBoss LogManager ロギングバックエンドを使用して、ログデータを収集および管理します。JBoss Logging を使用して、Quarkus 内部イベントおよびアプリケーション内のイベントに関するデータを収集できます。application.properties
ファイルにロギングの動作を設定できます。
JBoss LogManager は、JBoss Logging に加えて、いくつかのサードパーティーのロギング API をサポートします。JBoss LogManager は、サポートされるすべてのロギング API からのログをマージします。
ロギング用にサポートされている API:
Quarkus は、JBoss Logging を使用してすべてのロギング機能を処理します。別のロギング API に依存するライブラリーを使用する場合は、このライブラリーを依存関係から除外し、JBoss Logging を設定してサードパーティー API のロギングアダプターを使用する必要があります。
1.1.1. Apache Log4j ロギングフレームワークの追加
Apache Log4j は、ロギングバックエンドとロギング API を含むロギングフレームワークです。Quarkus は JBoss LogManager バックエンドを使用するため、log4j2-jboss-logmanager
ライブラリーをプロジェクトに追加し、ロギング API として Log4j を使用できます。Log4j ライブラリーを追加すると、Log4j ログが JBoss Log Manager にルーティングされます。Log4j の依存関係を含める必要はありません。
手順
log4j2-jboss-logmanager
ライブラリーを依存関係としてプロジェクトのpom.xml
ファイルに追加します。pom.xml
ファイルの例<dependency> <groupId>org.jboss.logmanager</groupId> <artifactId>log4j2-jboss-logmanager</artifactId> </dependency>
log4j2-jboss-logmanager
は Log4J バージョン 2 API のライブラリーです。レガシーの Log4J バージョン 1 API を使用する場合は、代わりにlog4j-jboss-logmanager
を追加する必要があります。
関連情報
1.1.2. ロギングアダプターの使用
Quarkus は、すべてのロギング要件に関して JBoss Logging ライブラリーに依存します。
Apache Commons Logging、Log4j、SLF4j などの他のロギングライブラリーの依存関係を持つライブラリーを使用する場合は、これらのロギングライブラリーを依存関係から除外し、JBoss Logging が提供するアダプターのいずれかを使用する必要があります。Quarkus エクステンションの依存関係であるライブラリー用のアダプターを追加する必要はありません。
サードパーティーのロギングの実装は、ネイティブの実行可能ファイルに含まれていないため、アプリケーションがコンパイルに失敗し、次のようなエラーメッセージが表示される場合があります。
Caused by java.lang.ClassNotFoundException: org.apache.commons.logging.impl.LogFactoryImpl
使用するサードパーティーのロギング実装用に JBoss Logging アダプターを設定することで、このエラーを防ぐことができます。
手順
使用しているロギングライブラリーに応じて、アダプターのいずれかを
pom.xml
ファイルに追加します。Apache Commons Logging:
pom.xml
ファイルの例<dependency> <groupId>org.jboss.logging</groupId> <artifactId>commons-logging-jboss-logging</artifactId> </dependency>
Log4j:
pom.xml
ファイルの例<dependency> <groupId>org.jboss.logmanager</groupId> <artifactId>log4j-jboss-logmanager</artifactId> </dependency>
Log4j2:
pom.xml
ファイルの例<dependency> <groupId>org.jboss.logmanager</groupId> <artifactId>log4j2-jboss-logmanager</artifactId> </dependency>
SLF4j:
pom.xml
ファイルの例<dependency> <groupId>org.jboss.slf4j</groupId> <artifactId>slf4j-jboss-logmanager</artifactId> </dependency>