6.2.2. 国際化されたロガー、メッセージ、例外の作成
6.2.2.1. 国際化されたログメッセージの作成
このタスクでは、JBoss ロギングツールを使用して MessageLogger インターフェースを作成することにより、国際化されたログメッセージを作成する方法を示します。すべてのオプション機能またはログメッセージの国際化については取り上げません。
完全な例は
logging-tools
クイックスタートを参照してください。
前提条件
- Maven プロジェクトがすでに存在している必要があります。「JBoss ロギングツールの Maven 設定」を参照してください。
- JBoss ロギングツールに必要な Maven 設定がプロジェクトにある必要があります。
手順6.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(projectCode="") 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 つ以上の国際化されたロガーをプロジェクトがサポートするようになります。