记录填充的消息和异常的堆栈跟踪的正确方法是什么?
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
3
我不明白为什么slf4j使用其自己的格式字符串语法而不是标准%s样式。烦死了
—
基思·泰勒
@KeithTyler我
—
Betlista
{}
更喜欢口味问题……
@KeithTyler
—
user149408
toString()
参数的方法可能很昂贵。使用此语法,仅传递对每个对象的引用,并且toString()
仅当实际记录了特定消息时才调用该方法。如果日志级别为更高或更高,则在日志info()
调用中引用的对象将不会调用其toString()
方法WARN
。该{}
语法是提醒用户,这是不是一个String.format()
样的操作,也就是说,它们应该通过对象,而不是字符串,其表示。