使用Spring Boot项目中的日志打印功能的时候,发现调用Logger.errror()方法的时候不能完全地打印出网站的错误堆栈信息,只能打印出这个错误是一个什么错误。
为什么呢,原因在于这个方法是一个多态的方法。
public void error(String msg, Throwable t);public void error(String msg);
如果只是传一个参数e进去,那么e就会被当作是String类型(会自动掉哦那个toString()方法把Exception转成String),而不是Exception类型。
如果想打印堆栈信息,那么必须传两个或两个以上的参数,实际上就是为了调用上面的第一个多态方法。
因此正确的调用方法应该是:
Logger.error("出错了", e); // 第二个参数是Exception类型
而不是:
Logger.error("出错了" + e);Logger.error(e);Logger.error(e.getMessage);
调用方法的时候最好点进源码里面查看是否存在多态的情况,避免调用不当造成没有达到预期的效果。
"很多人变了,很多事变了。"