logger.error打印完整的錯誤堆棧信息的正確使用方法

在使用sl4j進行異常日誌打印的時候,有幾種方式,那麼如果需要打印完整堆棧信息,應該用哪一種呢?

模擬代碼,模擬了一個下標越界異常,我們一起來看看

    public static void main(String[] args) {
        try {
            logger.info("開始");
            String[] s = new String[]{"1","2"};
            System.out.println(s[2]);
            logger.info("結束");
        }catch (Exception e){
            logger.error(e);
            logger.error(e.getMessage());
            logger.error("錯誤",e.getMessage());
            logger.error("錯誤",e);
        }
    }
1.logger.error(e)  自動調e.toString()方法
輸出:
09:41:12.969 INFO  com.ieslab.wanganzhicai.job.WangAnZhiCaiDeviceStateScheduled 48 main - 開始
09:41:12.971 ERROR com.ieslab.wanganzhicai.job.WangAnZhiCaiDeviceStateScheduled 53 main - java.lang.ArrayIndexOutOfBoundsException: 2
2.logger.error(e.getMessage())  異常錯誤信息
輸出:
09:42:40.253 INFO  com.ieslab.wanganzhicai.job.WangAnZhiCaiDeviceStateScheduled 48 main - 開始
09:42:40.254 ERROR com.ieslab.wanganzhicai.job.WangAnZhiCaiDeviceStateScheduled 54 main - 2
3.logger.error("錯誤",e.getMessage());  自定義異常信息與錯誤異常信息
輸出:
09:43:23.710 INFO  com.ieslab.wanganzhicai.job.WangAnZhiCaiDeviceStateScheduled 48 main - 開始
09:43:23.711 ERROR com.ieslab.wanganzhicai.job.WangAnZhiCaiDeviceStateScheduled 55 main - 錯誤
4.logger.error("錯誤",e);  自定義異常信息與堆棧信息
輸出:
09:44:08.820 INFO  com.ieslab.wanganzhicai.job.WangAnZhiCaiDeviceStateScheduled 48 main - 開始
09:44:08.823 ERROR com.ieslab.wanganzhicai.job.WangAnZhiCaiDeviceStateScheduled 56 main - 錯誤 java.lang.ArrayIndexOutOfBoundsException: 2
	at com.ieslab.wanganzhicai.job.WangAnZhiCaiDeviceStateScheduled.main(WangAnZhiCaiDeviceStateScheduled.java:50) [classes/:?]
	```

如果要打印完整的堆棧錯誤信息請使用
logger.error(“錯誤”,e)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章