如何使用SLF4J使用占位符记录异常和消息

pjp*_*pjp 78 java logging slf4j

使用SLF4J记录错误消息和异常的正确方法是什么?

我试过这样做但是从不打印异常堆栈跟踪:

logger.error("Unable to parse data {}", inputMessage, e);

在这种情况下,我想填充{}inputMessage和退出异常堆栈跟踪.

我能看到这样做的唯一方法就是这样做:

logger.error("Unable to parse data " + inputMessage, e);

这不漂亮.

Cek*_*eki 120

从SLF4J版本1.6开始,SLF4J将按照您的意图解释最后一个参数,即作为例外.您必须使用旧版本的SLF4J API.

  • 这是在Javadoc中描述的吗?我期待在这里找到类似的信息:http://www.slf4j.org/apidocs/org/slf4j/Logger.html (6认同)
  • 这就像是一个保密的秘密.谢谢你指出来.我的后续问题是为什么他们会隐瞒这样一个事实:这在var-arg中是可能的?为什么他们不能创建一个新的重载方法,它接受`Throwable`然后在那之后有一个var-arg?是否有擦除问题?这是其他库中的标准,将异常作为最后一个参数传入吗? (4认同)
  • 这有(因为?)已记录在FAQ:https://www.slf4j.org/faq.html#paramException中.我同意应该更清楚地记录此功能. (4认同)
  • Scot,@ Stephan - 上述行为似乎记录在他们的FAQ [这里](http://www.slf4j.org/faq.html#paramException)中. (3认同)
  • 我相信你,但就像@Scot 一样,我希望这种行为会被记录下来。 (2认同)