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