在使用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)