在日志中打印异常,经常会看到以下的写法:
logger.error(e.getMessage());
或者是:
e.printStackTrace();
这两种其实都不太好。
e.getMessage只会打印出异常的类型,但是不会显示出错的异常方法堆栈,无法在日志中找出错误代码
而e.printStackTrace();则是将异常打印到控制台,并不是打印到error日志中。
解决方法
看logger.error源码,可以发现:
public void error(String msg, Throwable t);
public void error(String msg);
如果想在error日志中打印异常,可以使用第一种。
logger.error(“xxx出错”,e); //第二个参数是Exception
注意,方法有两个参数,通过逗号隔开,而不是用加号连接。
也就是说,并不是logger.error(“xxx出错:”+e) 或 logger.error(e) 或logger.error(e.getMessage());
示例如下:
try{
}catch(Exception e) {
logger.error(“xxx出错:”,e)
}
参考资料:
https://blog.csdn.net/heweimingming/article/details/76423186