使用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);
調用方法的時候最好點進源碼里面查看是否存在重載的情況,避免調用不當造成沒有達到預期的效果。
"很多人變了,很多事變了。"