ufk*_*ufk 25 java tomcat stack-trace
我有一个打印异常的通用函数(使用log4j):
private void _showErrorMessage(Exception e) {
log.error(e.getClass() + ": " + e.getMessage() + ": " + e.getCause() + "\n" + e.getStackTrace().toString());
}
Run Code Online (Sandbox Code Playgroud)
而不是看到我看到的堆栈跟踪:
[Ljava.lang.StackTraceElement;@49af7e68
Run Code Online (Sandbox Code Playgroud)
如何正确查看异常的堆栈跟踪?
log.error(e)< - 显示错误,但不显示堆栈跟踪
Joa*_*uer 68
您的日志记录框架应该能够记录异常,因此只需将异常传递给正确的.error(Object, Throwable)调用即可:
如果您的日志记录框架无法做到这一点,或者String由于任何其他原因需要堆栈跟踪,那么它就会变得有点困难.你必须创建一个PrintWriter包裹一个StringWriter,并呼吁.printStackTrace()在Exception:
StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw));
String stacktrace = sw.toString();
Run Code Online (Sandbox Code Playgroud)
Pau*_*zie 14
你有没有尝试过?
private void _showErrorMessage(Exception e) {
log.error("Hey! got an exception", e);
}
Run Code Online (Sandbox Code Playgroud)
Gui*_*ume 12
我将使用ExceptionUtils#getFullStackTrace的Jakarta Commons的郎
Throwable.getStackTrace返回一个StackTraceElements 数组,因此该toString方法返回数组本身的文本表示.
为了实际检索堆栈跟踪信息,必须通过每个StackTraceElement信息来获取更多信息.
| 归档时间: |
|
| 查看次数: |
57638 次 |
| 最近记录: |