如何使用格式、参数和抛出进行记录



在记录器中,我想我找不到任何使用格式化消息和可抛出物进行报告的方法。

我发现

error(String format, Object... arguments) 
error(String msg, Throwable t) 
try {
    doSomething(arg1, arg2);
} catch (final SomeException se) {
    logger.error("Failed to do something with {} and {}", arg1, arg2);
    logger.error("Failed to do something", se);
}

有什么办法可以做到这一点吗?

logger.error("Failed to do something with {} and {}", new Object[]{arg1, arg2}, se);

不要害怕,去做吧!SLF4J足够聪明。如果提供的参数多于占位符,则记录器将尝试将最后一个参数强制转换为 Throwable 。如果成功,则会在日志中获得一个很好的堆栈跟踪。此功能在SLF4J版本1.6.0中引入 - 请参阅 http://www.slf4j.org/news.html 和 http://www.slf4j.org/faq.html#paramException。

如下所示的用法工作正常:

logger.error("one {} two {} error", new Object[] { 1, 2, new RuntimeException("stack trace") });

从版本 1.7.0 开始,有新的 varargs 重载,因此您可以简单地使用

logger.error("one {} two {} error", 1, 2, new RuntimeException("stack trace"));

最新更新