4.2. JBoss Logging Framework を用いたロギング
4.2.1. JBoss Logging について
JBoss Logging は、JBoss EAP に含まれるアプリケーションロギングフレームワークです。JBoss Logging を使用すると、簡単にロギングをアプリケーションに追加できます。また、フレームワークを使用するアプリケーションにコードを追加し、定義された形式でログメッセージを送信できます。アプリケーションサーバーにアプリケーションがデプロイされると、これらのメッセージをサーバーでキャプチャーしたり、サーバーの設定に基づいて表示したり、ファイルに書き込んだりできます。
JBoss Logging では次の機能が提供されます。
-
革新的で使いやすい型指定されたロガー。型指定されたロガーは
org.jboss.logging.annotations.MessageLoggerでアノテーションが付けられたロガーインターフェイスです。例は、国際化されたロガー、メッセージ、例外の作成 を参照してください。 - 国際化およびローカリゼーションの完全なサポート。翻訳者は properties ファイルのメッセージバンドルを、開発者はインターフェイスやアノテーションを使い作業を行います。詳細は、国際化と現地語化 を参照してください。
- 実稼働用の型指定されたロガーを生成し、開発用の型指定されたロガーを実行時に生成する構築時ツール。
4.2.2. JBoss Logging を使用したアプリケーションへのロギングの追加
この手順では、JBoss Logging を使用してアプリケーションにロギングを追加する方法を示します。
Maven を使用してプロジェクトをビルドする場合は、JBoss EAP Maven リポジトリーを使用するよう Maven を設定する必要があります。詳細は、JBoss EAP Maven リポジトリーの設定 を参照してください。
JBoss Logging JAR ファイルがアプリケーションのビルドパスに指定されている必要があります。
Red Hat CodeReady Studio を使用して構築する場合は、Project メニューから Properties を選択し、Targeted Runtimes を選択して JBoss EAP のランタイムにチェックマークが付いていることを確認します。
注記Red Hat CodeReady Studio で Target runtime を 7.4 以降に設定し、プロジェクトは Jakarta EE 8 仕様と互換性があります。
Maven を使用してプロジェクトをビルドする場合は、JBoss Logging フレームワークにアクセスするために必ず
jboss-logging依存関係をプロジェクトのpom.xmlファイルに追加してください。<dependency> <groupId>org.jboss.logging</groupId> <artifactId>jboss-logging</artifactId> <version>3.3.0.Final-redhat-1</version> <scope>provided</scope> </dependency>
jboss-eap-jakartaee8 BOM は
jboss-loggingのバージョンを管理します。詳細は、プロジェクト依存関係の管理 を参照してください。アプリケーションでのロギングの実例は、JBoss EAP に同梱されるloggingクイックスタートを参照してください。
JAR は、JBoss EAP がデプロイされたアプリケーションに提供するため、ビルドされたアプリケーションに含める必要はありません。
ロギングを追加する各クラスに対して、以下の手順を実行します。
使用する JBoss Logging クラスネームスペースに対して import ステートメントを追加します。少なくとも、以下の import ステートメントが必要です。
import org.jboss.logging.Logger;
org.jboss.logging.Loggerのインスタンスを作成し、静的メソッドLogger.getLogger(Class)を呼び出して初期化します。各クラスに対してこれを単一のインスタンス変数として作成することが推奨されます。private static final Logger LOGGER = Logger.getLogger(HelloWorld.class);
ログメッセージを送信するコードの
Loggerオブジェクトメソッドを呼び出します。Loggerには、異なるタイプのメッセージに対して異なるパラメーターを持つさまざまなメソッドがあります。以下のメソッドを使用して対応するログレベルのログメッセージとmessageパラメーターを文字列として送信します。LOGGER.debug("This is a debugging message."); LOGGER.info("This is an informational message."); LOGGER.error("Configuration file not found."); LOGGER.trace("This is a trace message."); LOGGER.fatal("A fatal error occurred.");JBoss Logging メソッドの完全リストは、Logging API のドキュメンテーションを参照してください。
次の例では、プロパティーファイルからアプリケーションのカスタマイズされた設定がロードされます。指定されたファイルが見つからない場合は、ERROR レベルログメッセージが記録されます。
例: JBoss Logging を用いたアプリケーションのロギング
import org.jboss.logging.Logger;
public class LocalSystemConfig
{
private static final Logger LOGGER = Logger.getLogger(LocalSystemConfig.class);
public Properties openCustomProperties(String configname) throws CustomConfigFileNotFoundException
{
Properties props = new Properties();
try
{
LOGGER.info("Loading custom configuration from "+configname);
props.load(new FileInputStream(configname));
}
catch(IOException e) //catch exception in case properties file does not exist
{
LOGGER.error("Custom configuration file ("+configname+") not found. Using defaults.");
throw new CustomConfigFileNotFoundException(configname);
}
return props;
}
}
4.2.3. Apache Log4j2 API のアプリケーションへの追加
Apache Log4j API の代わりに Apache Log4j2 API を使用して、アプリケーションのロギングメッセージを JBoss LogManager 実装に送信できます。
JBoss EAP 7.4 リリースでは Log4J2 API はサポート対象ですが、Apache Log4j2 Core 実装 org.apache.logging.log4j:log4j-core またはその設定ファイルはサポート対象外です。
手順
org.apache.logging.log4j:log4j-apiを依存関係としてプロジェクトのpom.xmlファイルに追加します。org.apache.logging.log4j:log4j-apiをpom.xmlファイルに追加する例。<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${version.org.apache.logging.log4j}</version> <scope>provided</scope> </dependency>注記log4j-apiMaven 依存関係は Apache Log4j2 API を参照します。log4jMaven 依存関係は Apache Log4j API を参照します。アプリケーションメッセージをログに記録すると、そのメッセージを JBoss Log Manager 実装に送信します。
-
オプション:
org.apache.logging.log4j.api モジュールを除外するには、モジュールをjboss-deployment-structure.xmlファイルから除外するか、add-logging-api-dependencies属性をfalseに設定する必要があります。
4.2.4. Log4j2 LogManager 実装の作成
アプリケーションで Log4j2 LogManager を使用するには、プロジェクトの pom.xml ファイルに Log4j2 API を追加します。さらに、対応する Log4j2 LogManager バージョンをプロジェクトの pom.xml ファイルに追加する必要があります。
手順
-
jboss-deployment-structure.xmlファイルでorg.apache.logging.log4j.apiモジュールの依存関係を除外して、Log4jloggingの依存関係を無効にします。 log4j-api依存関係とlog4j2依存関係をプロジェクトのpom.xmlファイルに追加します。log4j-api依存関係とlog4j2依存関係をpom.xmlファイルに追加する例。<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${version.org.apache.logging.log4j}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j2</groupId> <artifactId>log4j2-core</artifactId> <version>${version.org.apache.logging.log4j}</version> </dependency>注記log4j-apiMaven 依存関係は Apache Log4j2 API を参照します。log4jMaven 依存関係は Apache Log4j API を参照します。アプリケーションメッセージをログに記録すると、そのメッセージを Log4j2 LogManager 実装に送信します。
オプション:
org.apache.logging.log4j.api モジュールを除外するには、モジュールをjboss-deployment-structure.xmlファイルから除外するか、add-logging-api-dependencies属性をfalseに設定する必要があります。次に、log4j2-apiとlog4j2-coreをプロジェクトのpom.xmlファイルに追加する必要があります。注記jboss-deployment-structure.xmlファイルに変更を加える場合、変更をデプロイメントに適用します。add-logging-api-dependencies属性に変更を加える場合、すべてのデプロイされたアプリケーションに変更を適用します。