Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

6.2.2. 国際化されたロガー、メッセージ、例外の作成

6.2.2.1. 国際化されたログメッセージの作成

このタスクでは、JBoss Logging Tools を使用して、MessageLogger インターフェイスを作成することにより国際化されたログメッセージを作成する方法を示します。すべてのオプション機能またはそれらのログメッセージのローカリゼーションを網羅しているわけではありません。
完全な例については、logging-tools クイックスタートを参照してください。

要件:

  1. 作業用の Maven プロジェクトがすでに存在している必要があります。「JBoss Logging Tools の Maven 設定」 を参照してください。
  2. プロジェクトには、JBossLoggingTools に必要な Maven 設定が必要です。

手順6.1 国際化されたログメッセージバンドルを作成する

  1. メッセージロガーインターフェイスを作成する

    プロジェクトに Java インターフェイスを追加して、ログメッセージ定義を含めます。インターフェイスに定義されるログメッセージの説明的な名前を付けます。
    ログメッセージインターフェースの要件は次のとおりです。
    • 注釈を付ける必要があります@org.jboss.logging.MessageLogger
    • 延長する必要がありますorg.jboss.logging.BasicLogger
    • インターフェイスは、このインターフェイスを実装する型付きロガーであるフィールドを定義する必要があります。でこれを行うgetMessageLogger()の方法org.jboss.logging.Logger
    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() );
    }
  2. メソッド定義を追加する

    各ログメッセージのインターフェースにメソッド定義を追加します。ログメッセージの各メソッドにその内容を表す名前を付けます。
    各メソッドの要件は次のとおりです。
    • メソッドは返す必要があります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 です。
  3. メソッドを呼び出します。

    メッセージをログに記録する必要があるコードのインターフェイスメソッドへの呼び出しを追加します。インターフェースの実装を作成する必要はありません。これは、プロジェクトがコンパイルされる時にアノテーションプロセッサーにより行われます。
    AccountsLogger.LOGGER.customerQueryFailDBClosed();
    カスタムロガーは BasicLogger からサブクラス化されているため、BasicLogger((debug()error()など) も使用できます。国際化されていないメッセージをログに記録するために他のロガーを作成する必要はありません。
    AccountsLogger.LOGGER.error("Invalid query syntax.");

結果

プロジェクトで、現地語化できる 1 つ以上の国際化されたロガーがサポートされるようになります。