如何在JAVA中查看完整的exception日志?
当我使用命令java ExceptionTest运行一些java程序时,有时会省略exception并且看起来像
Exception in thread "main" java.lang.NoClassDefFoundError: aa/bb/DD at SOMEWHERE(unknown source) Caused by: java.lang.ClassNotFoundException: aaa.bbb.CC at SOMEWHER(unknown source) ... 13 more
在这种情况下,我想看到另外13个例外。 有没有选项可以查看所有exception日志?
你已经看到了它们,它只是荒谬的方式Java(和默认的Logback)默认打印exception。 这个堆栈跟踪:
Exception in thread "main" java.lang.NoClassDefFoundError: aa/bb/DD at SOMEWHERE(unknown source) Caused by: java.lang.ClassNotFoundException: aaa.bbb.CC at SOMEWHER(unknown source) ... 13 more
实际上意味着以下程序流程(从下到上):
Caused by: java.lang.ClassNotFoundException: aaa.bbb.CC at SOMEWHER(unknown source) Exception in thread "main" java.lang.NoClassDefFoundError: aa/bb/DD at SOMEWHERE(unknown source)
... 13 more
(在Logback中N common frames omitted
了N common frames omitted
)只意味着之前已经打印过这些exception。 在Logback中,您可以重新构建堆栈跟踪以避免重复并始终以正确的顺序打印堆栈行,请参阅我的博客 。
还有13个例外。 调用堆栈还有13行与之前的调用堆栈相同,如下所述: http : //java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace ()