我正在为logback编写一个CustomLayout,因为我想调整线程名称和日志记录器名称。 logback文档说:
在上面的示例中,doLayout方法忽略事件中包含的任何异常。在真实的布局实现中,您很可能也希望打印异常内容。
嗯,当默认实现会时,我当然希望打印堆栈跟踪信息。但是我找不到如何执行此操作的说明。我下载了源代码并查看了一下。以下代码似乎有效:
/**
* How much stack to print if there's an exception.
*/
private List<String> stackOptionList = Arrays.asList("full");
@Override
public String doLayout(ILoggingEvent event) {
StringBuffer sbuf = new StringBuffer(128);
. . .
IThrowableProxy proxy = event.getThrowableProxy();
if (proxy != null) {
ThrowableProxyConverter converter = new ThrowableProxyConverter();
converter.setOptionList(stackOptionList);
converter.start();
sbuf.append(converter.convert(event));
sbuf.append(CoreConstants.LINE_SEPARATOR);
}
. . .
return sbuf.toString();
}
有没有更好/更可靠的方式?