在日志中打印异常,常常会看到如下的写法:.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