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