替换日志消息中的参数并在Log4j 2中添加Throwable

时间:2016-01-30 00:59:51

标签: java exception logging log4j

我正在尝试记录异常,并希望在日志消息中包含另一个变量的值。是否有Logger API可以做到这一点?

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

2 个答案:

答案 0 :(得分:11)

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);

答案 1 :(得分:6)

您是否尝试过查看ParameterizedMessage

来自文档

  

参数:

     

messagePattern - 消息"格式"串。这将会   包含" {}"的字符串占位符应该是参数   取代。

     

objectArgs - 替换的参数。

     

throwable - 一个可扔掉的