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

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

posted @ 2020-08-12 21:40  孙行者、  阅读(1049)  评论(0编辑  收藏  举报