6.2.4.3. パラメーターによるログメッセージのカスタマイズ
カスタムのログインメソッドはパラメーターを定義できます。これらのパラメーターを使用してログメッセージに表示される追加情報を渡すことが可能です。ログメッセージでパラメーターが表示される場所は、明示的なインデクシングか通常のインデクシングを使用してメッセージ自体に指定されます。
手順6.8 パラメーターによるログメッセージのカスタマイズ
メソッド定義にパラメーターを追加する
任意のタイプのパラメーターをメソッド定義に追加できます。型に関係なくパラメーターの String 表現がメッセージに表示されます。ログメッセージにパラメーター参照を追加します
参照は明示的なインデックスまたは通常のインデックスを使用できます。- 通常のインデックスを使用するには、各パラメーターを表示したいメッセージ文字列に
%s
文字を挿入します。%s
の最初のインスタンスにより最初のパラメーターが挿入され、2 番目のインスタンスにより 2 番目のパラメーターが挿入されます。 - 明示的なインデックスを使用するには、文字
%{#$}s
をメッセージに挿入します。ここで、# は表示したいパラメーターの数を示します。
重要
明示的なインデックスを使用すると、メッセージのパラメーター参照の順番がメソッドで定義される順番とは異なるようになります。これは、パラメーターの異なる順序を必要とする可能性のある翻訳されたメッセージにとって重要です。
指定されたメッセージでは、パラメーターの数とパラメーターへの参照の数が同じでなければなりません。同じでないとコードがコンパイルされません。
@Cause
アノテーションが付けられたパラメーターはパラメーターの数には含まれません。
例6.1 通常のインデックスを使用したメッセージパラメーター
@LogMessage(level=Logger.Level.DEBUG) @Message(id=2, value="Customer query failed, customerid:%s, user:%s") void customerLookupFailed(Long customerid, String username);
例6.2 明示的なインデックスを使用したメッセージパラメーター
@LogMessage(level=Logger.Level.DEBUG) @Message(id=2, value="Customer query failed, user:%2$s, customerid:%1$s") void customerLookupFailed(Long customerid, String username);