我正在尝试记录异常,并希望在日志消息中包含另一个变量的值。是否有Logger API可以做到这一点?
logger.error("Logging in user {} with birthday {}", user.getName(), user.getBirthdayCalendar(), exception);
答案 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 - 一个可扔掉的