在日志中打印異常,經常會看到以下的寫法:
logger.error(e.getMessage());
或者是:
e.printStackTrace();
這兩種其實都不太好。
e.getMessage只會打印出異常的類型,但是不會顯示出錯的異常方法堆棧,無法在日志中找出錯誤代碼
而e.printStackTrace();則是將異常打印到控制台,並不是打印到error日志中。
解決方法
看logger.error源碼,可以發現:
public void error(String msg, Throwable t);
public void error(String msg);
如果想在error日志中打印異常,可以使用第一種。
logger.error(“xxx出錯”,e); //第二個參數是Exception
注意,方法有兩個參數,通過逗號隔開,而不是用加號連接。
也就是說,並不是logger.error(“xxx出錯:”+e) 或 logger.error(e) 或logger.error(e.getMessage());
示例如下:
try{
}catch(Exception e) {
logger.error(“xxx出錯:”,e)
}
參考資料:
https://blog.csdn.net/heweimingming/article/details/76423186