I have a generic function that prints exceptions (using log4j):
private void _showErrorMessage(Exception e) {
log.error(e.getClass() + ": " + e.getMessage() + ": " + e.getCause() + "\n" + e.getStackTrace().toString());
}
Instead of seeing the stack trace I'm seeing:
[Ljava.lang.StackTraceElement;@49af7e68
How can I view the stack trace of the exception properly?
log.error(e) <- shows the error, but doesn't show stack trace
Your logging framework should have the ability to log exceptions, so simply passing the exception to the proper .error(Object, Throwable)
call should be enough:
java.util.logging
can do itIf your logging framework can't do that, or you need the stack trace in a String
for any other reason, then it becomes a bit harder. You'll have to create a PrintWriter
wrapping a StringWriter
and call .printStackTrace()
on the Exception
:
StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw));
String stacktrace = sw.toString();