在我的代码的各个部分中,我在测试时都有断言。在 IDE 中,我看到错误和堆栈跟踪,但在日志文件中找不到这些。 我该如何设置才能在我的日志文件中捕获这些断言错误?
我配置了 logback,并且可以很好地捕获正常异常。
我也用
Thread.setDefaultUncaughtExceptionHandler
但它似乎不能处理它。
有什么想法吗?
如果我理解正确,您提到 logback 捕获并记录“常见”异常,但不是断言错误。
请注意,存在关于错误和异常的继承层次结构:
Throwable
是它的父级,它可以捕获Error和Exception。也许您可以为 Throwable
: 添加一个 log-and- throw 子句
示例:
try {
yourTestHere();
} catch(Exception ex) {
// will not catch Error, so it will not catch AssertionError
log.error("boom",ex); //or whatever mechanism logback uses for log it...
throw(ex);
} catch(Throwable ex) {
// this will catch AssertionError, that is an error, and redirect it to logback.
log.error("BIG badaboom",ex);
throw(ex);
}