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()); //错误
。。。。。。
//正确的方式只有一个, 错误的方式千千万万

如果文章有帮助到您,请点个赞,您的反馈会让我感到文章是有价值的


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM