例外をログに記録しようとしています。ログメッセージに別の変数の値を含めたいのですが。これを行うロガーAPIはありますか?
logger.error("Logging in user {} with birthday {}", user.getName(), user.getBirthdayCalendar(), exception);
ParameterizedMessage を見てみましたか?
ドキュメントから
パラメーター:
messagePattern-メッセージの「フォーマット」文字列。これは、パラメータを置き換える必要がある「{}」プレースホルダを含む文字列になります。
objectArgs-置換の引数。
スロー可能-スロー可能
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);