程序中發生異常後,我們捕捉到異常之後一般是輸出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));
}