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

der*_*dji 14 java logging log4j exception

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

logger.error("Logging in user {} with birthday {}", user.getName(), user.getBirthdayCalendar(), exception);
Run Code Online (Sandbox Code Playgroud)

Dzm*_*try 16

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


Dom*_*cEU 8

你试过看过ParameterizedMessage吗?

来自文档

参数:

messagePattern - 消息"format"字符串.这将是一个包含"{}"占位符的String,其中参数应该被替换.

objectArgs - 替换的参数.

扔掉 - 一个可扔的

  • 如果有人想知道,上面的内容将表示为:`logger.error(new ParameterizedMessage("使用birthday {}登录用户{}",user.getName(),user.getBirthdayCalendar()),exception);` (7认同)