【发布时间】:2011-09-16 07:56:02
【问题描述】:
记录填充消息和异常堆栈跟踪的正确方法是什么?
logger.error(
"\ncontext info one two three: {} {} {}\n",
new Object[] {"1", "2", "3"},
new Exception("something went wrong"));
我想产生类似这样的输出:
context info one two three: 1 2 3
java.lang.Exception: something went wrong
stacktrace 0
stacktrace 1
stacktrace ...
slf4j 版本 1.6.1
【问题讨论】:
-
我不明白为什么 slf4j 使用自己的格式字符串语法而不是标准的 %s 样式。烦人。
-
@KeithTyler 我更喜欢
{},品味问题... -
@KeithTyler 参数的
toString()方法可能很昂贵。使用此语法,仅传递对每个对象的引用,并且仅在实际记录特定消息时才调用toString()方法。如果日志级别为WARN或更高,则info()日志调用中引用的对象将不会调用其toString()方法。{}语法提醒用户这不是String.format()式的操作,即他们应该传递对象而不是字符串表示形式。
标签: java exception logging slf4j