web-dev-qa-db-ja.com

ログメッセージのパラメーターを置き換え、スロー可能なオブジェクトをLog4j 2に追加する

例外をログに記録しようとしています。ログメッセージに別の変数の値を含めたいのですが。これを行うロガーAPIはありますか?

logger.error("Logging in user {} with birthday {}", user.getName(), user.getBirthdayCalendar(), exception);
16
derrdji

ParameterizedMessage を見てみましたか?

ドキュメントから

パラメーター:

messagePattern-メッセージの「フォーマット」文字列。これは、パラメータを置き換える必要がある「{}」プレースホルダを含む文字列になります。

objectArgs-置換の引数。

スロー可能-スロー可能

9
DominicEU

Log4j 2(および SLF4J 1.6 + )には、文書化されていない機能があります。最後のパラメータとしてThrowableを渡すことができます。そして、それは特別な扱いを受けます。 AbstractLogger#logMessage(String, Level, Marker, String, Object...) および ReusableParameterizedMessage#initThrowable() を参照してください。

ParametrizedMessageを気にする必要はありません。問題のコードは期待どおりに機能します。

logger.error("Logging in user {} with birthday {}", user.getName(), user.getBirthdayCalendar(), exception);

22
Dzmitry