Log4j輸出日誌沒有堆棧解決

問題

logger.error("xxx error",exception)

正常的日誌輸出 ,在生產環境中,時常會沒有異常堆棧輸出 。

java.lang.NullPointerException

這真的是讓人頭大, 這就是降維打擊。(看《三體》學的詞,哈哈)

解決

JVM爲了性能會做優化, 如果頻繁拋出某個異常,會重新編譯 , 不再打印異常堆棧 。

只要在啓動參數加上 -XX:-OmitStackTraceInFastThrow , 就可以禁用該優化。

java.lang.NullPointerException
  at ........

Log4j日誌的正確輸出方法

異常日誌的輸出 的正確使用方式是:

logger.error("xxx error",exception); //正確
logger.error("xxx error , " + exception); //錯誤
logger.error("xxx error , " + exception.getMessage()); //錯誤
logger.error("xxx error : {} ",exception.getMessage()); //錯誤
。。。。。。
//正確的方式只有一個, 錯誤的方式千千萬萬

如果文章有幫助到您,請點個贊,您的反饋會讓我感到文章是有價值的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章