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 のランタイムにチェックマークが付いていることを確認します。
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-javaee8 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; } }