我在java中实现了一个定制的logeventpatternconverter,它添加了一个新的log4j格式化指令。在我的自定义logeventpatternconverter中,它正在启动我的 format
方法当一个可丢弃的 t
已记录,例如,使用 Logger.getLogger(MyClass.class.getSimpleName()).error("Error", t);
```
@Override
public void format(LogEvent event, StringBuilder toAppendTo) {
if (event.getThrown() != null) {
toAppendTo.append("This is a throwable");
} else {
toAppendTo.append(event.getMessage());
}
}
在我的日志输出中,我看到记录了“this is a throwable”,但随后也记录了throwable的堆栈跟踪,显然没有通过我的日志 `format` 方法。为什么呢?如何在不记录两次堆栈跟踪的情况下拦截并格式化堆栈跟踪?
2条答案
按热度按时间xkftehaa1#
可能是这样的:
zbwhf8kr2#
我想出来了——用吧
%throwable{0}
在模式中,以抑制堆栈跟踪的打印。您仍然可以自己将其格式化并附加到format
方法。