程序中发生异常后,我们捕捉到异常之后一般是输出e.toString到日志,这样我们只能知道异常类型是什么,只有一个简单的描述,无法看到具体的堆栈信息。利用下面一段代码,可以将完整的堆栈信息输出到日志系统中。
public static String getTrace(Throwable t) {
StringWriter stringWriter= new StringWriter();
PrintWriter writer= new PrintWriter(stringWriter);
t.printStackTrace(writer);
StringBuffer buffer= stringWriter.getBuffer();
return buffer.toString();
}
在发生异常的地方,直接调用此方法即可:
try(){
}catch(IoException e)
e.printStackTrace();
logger.error(getTrace(e));
}