我有一个通用的函数,用于打印异常(使用log4j):
private void _showErrorMessage(Exception e) {
log.error(e.getClass() + ": " + e.getMessage() + ": " + e.getCause() + "\n" + e.getStackTrace().toString());
}
我看到的不是堆栈跟踪,而是:
[Ljava.lang.StackTraceElement;@49af7e68
我如何正确查看异常的堆栈跟踪信息?
更新
log.error(e) <- 显示错误,但不显示堆栈跟踪信息。
log.error(e)
方法会调用错误版本的方法 (http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Category.html#error%28java.lang.Object%29)。该方法的JavaDoc甚至提到了这个事实: "警告:请注意,向此方法传递Throwable将打印Throwable的名称但不包括堆栈跟踪信息。要打印堆栈跟踪,请改用error(Object, Throwable)形式。" - Joachim Sauer