在error日誌打印異常

在日誌中打印異常,常常會看到如下的寫法:.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

相關文章
相關標籤/搜索