美文网首页
日志打印无堆栈信息

日志打印无堆栈信息

作者: 错对对 | 来源:发表于2019-02-19 11:30 被阅读0次

    情况:系统抛出异常,日志没有打印堆栈信息 错误日志正常打印

    分析:异常信息打印格式没有错误,本地测试没有问题,线上其他环境也没有类似的情况。 可能是jvm禁掉了某些

    东西,导致了异常信息没有打印出来

    资料:https://stackoverflow.com/questions/2295015/log4j-not-printing-the-stacktrace-for-exceptions

    https://www.oracle.com/technetwork/java/javase/relnotes-139183.html

    虚拟机部分
    The compiler in the server VM now provides correct stack backtraces for all "cold" built-in exceptions. For performance purposes, when such an exception is thrown a few times, the method may be recompiled. After recompilation, the compiler may choose a faster tactic using preallocated exceptions that do not provide a stack trace. To disable completely the use of preallocated exceptions, use this new flag: -XX:-OmitStackTraceInFastThrow.
    译文:服务器VM中的编译器现在为所有“冷”内置异常提供正确的堆栈回溯。出于性能目的,当抛出这样的异常几次时,可以重新编译该方法。重新编译之后,编译器可以使用不提供堆栈跟踪的预分配异常来选择更快的策略。要完全禁用预分配的异常,请使用以下新标志: -XX:-OmitStackTraceInFastThrow。

    结论:虚拟机打印堆栈超过一定次数以后,会关闭掉异常堆栈的打印,通过-XX:-OmitStackTraceInFastThrow

    参数可禁用 掉该优化

    相关文章

      网友评论

          本文标题:日志打印无堆栈信息

          本文链接:https://www.haomeiwen.com/subject/vfexyqtx.html