记录器格式和throwable,slf4j

时间:2017-07-12 09:45:07

标签: java logging slf4j

在将一些旧记录器从String.format转换为较新的slf4j {}变体的过程中,我偶然发现了这种情况:

logger.error(String.format("%s ... %s ... %s", ...), e);

我只想使用{}并删除String格式,但是, 包含throwable的记录器方法签名是:

error(String msg, Throwable t)

所以我必须在这种情况下保留String.format

为什么没有:

error(Throwable t, String format, Object... arguments)

1 个答案:

答案 0 :(得分:18)

从SLF4J 1.6.0开始,如果存在多个参数,并且如果日志语句中的最后一个参数是异常,则SLF4J将假定用户希望将最后一个参数视为异常而不是简单参数。

所以,写(在SLF4J版本1.7.x及更高版本中)

logger.error("one two three: {} {} {}", "a", "b", 
          "c", new Exception("something went wrong"));

会做你想要达到的目标......