我有一个通用函数,可以打印异常(使用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)
您的日志记录框架应该具有记录异常的能力,因此只需将异常传递给适当的.error(Object, Throwable)
调用就足够了:
您尝试过吗?
[Throwable.getStackTrace
返回一个由Throwable.getStackTrace
s组成的数组,因此StackTraceElement
方法将返回该数组本身的文本表示形式。
您也可以查看Google的Guava库。
对于您的问题的确切答案是,您应该像这样调用Log4J:
[private void _showErrorMessage(Exception e) {
log.error(e.getClass() + ": " + e.getMessage() + ": " + e.getCause(), e);
}
显示了用于此目的的两种方法,一种基于Apache Commons,另一种使用标准JDK方法。