5.2.2. 国際化されたロガー、メッセージ、例外の作成
5.2.2.1. 国際化されたログメッセージの作成
このタスクでは、MessageLogger インターフェースを作成して国際化されたログメッセージを作成する方法を説明します。ここではすべてのオプション機能やログメッセージの現地語化については取り上げません。
完全な例は
logging-tools
クイックスタートを参照してください。
前提条件
- 作業用の Maven プロジェクトが既に存在している必要があります。
- JBoss ロギングツールに必要な Maven 設定がプロジェクトにある必要があります。
手順5.1 国際化されたログメッセージバンドルの作成
メッセージロガーインターフェースの作成
ログメッセージの定義が含まれるように Java インターフェースをプロジェクトに追加します。定義されるログメッセージに対し、インターフェースに記述的な名前を付けます。ログメッセージインターフェースの要件は次の通りです。@org.jboss.logging.MessageLogger
アノテーションが付けられていなければなりません。org.jboss.logging.BasicLogger
を拡張しなければなりません。- このインターフェースを実装する型付きロガーのフィールドをインターフェースが定義する必要があります。
org.jboss.logging.Logger
のgetMessageLogger()
メソッドで定義します。
package com.company.accounts.loggers; import org.jboss.logging.BasicLogger; import org.jboss.logging.Logger; import org.jboss.logging.MessageLogger; @MessageLogger interface AccountsLogger extends BasicLogger { AccountsLogger LOGGER = Logger.getMessageLogger( AccountsLogger.class, AccountsLogger.class.getPackage().getName() ); }
メソッド定義の追加
各ログメッセージのインターフェースにメソッド定義を追加します。ログメッセージに対する各メソッドに記述的な名前を付けます。各メソッドの要件は次の通りです。- メソッドは
void
を返さなければなりません。 @org.jboss.logging.LogMessage
アノテーションが付いていなければなりません。@org.jboss.logging.Message
アノテーションが付いていなければなりません。@org.jboss.logging.Message
の値属性にはデフォルトのログインメッセージが含まれます。翻訳がない場合にこのメッセージが使用されます。
@LogMessage @Message(value = "Customer query failed, Database not available.") void customerQueryFailDBClosed();
デフォルトのログレベルはINFO
です。メソッドの呼び出し
メッセージがロギングされなければならない場所にコードのインターフェースメソッドへの呼び出しを追加します。プロジェクトがコンパイルされる時にアノテーションプロセッサーがインターフェースの実装を作成するため、インターフェースの実装を作成する必要はありません。AccountsLogger.LOGGER.customerQueryFailDBClosed();
カスタムのロガーは BasicLogger よりサブクラス化されるため、BasicLogger
のロギングメソッド (debug()
やerror()
など) を使用することもできます。国際化されていないメッセージをログに記録するため他のロガーを作成する必要はありません。AccountsLogger.LOGGER.error("Invalid query syntax.");
結果: 現地語化できる 1 つ以上の国際化されたロガーをプロジェクトがサポートするようになります。