V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ainyyy
V2EX  ›  Java

问一个日志不打印栈信息的问题

  •  
  •   ainyyy · 22 小时 30 分钟前 · 728 次点击

    部分代码如下:

    		
            } catch (Exception e) {
                log.error(e.getMessage(), e);
                return RestResult.fail("系统异常");
            }
    
    

    日志文件中显示

    2025-11-07 09:43:23.128 [http-nio-20001-exec-934] ERROR StoreOrderServiceImpl:557 - null
    java.lang.NullPointerException: null 
    

    然后就结束了, 最近出了好多这种问题. 打印空指针,但是完全没有栈相关信息

    8 条回复    2025-11-08 08:58:50 +08:00
    mulychou
        1
    mulychou  
       22 小时 23 分钟前
    问题在于:e.getMessage() 可能为 null 。
    例如,在 NullPointerException 没有具体 message 时,e.getMessage() 返回 null 。于是日志输出时会变成:
    null
    java.lang.NullPointerException: null
    此时虽然异常对象 e 传入了,但很多日志框架(例如 logback 或 log4j2 )在第一个参数是 null 时会只打印异常类型,而不打印堆栈。
    直接使用占位符打印日志吧,例如:
    log.error("Error occurred: {}", e.getMessage(), e);
    Goooooos
        2
    Goooooos  
       22 小时 17 分钟前   ❤️ 1
    java 的 JIT 会优化掉一部分异常的堆栈,尤其是 NPE

    启动参数加上-XX:-OmitStackTraceInFastThrow 可以禁用 fast throw 优化
    JYii
        3
    JYii  
       22 小时 11 分钟前
    正常输出应该是先打印 exception 的 message ,然后紧跟堆栈信息,现在没有,那不就是如 1L 所说。而且 log.error 的第一个参数应是自定义的消息模板,不该直接放异常信息。
    luoke99
        4
    luoke99  
       21 小时 46 分钟前
    是不是由自己封装的异常类触发的,我们之前有个项目就是封装了一个 BizException,有个家伙把 fillInStackTrace() 重写了,导致 log 不会打印异常栈
    Wh1te
        5
    Wh1te  
       21 小时 44 分钟前   ❤️ 1
    这是 JVM 的 OmitStackTraceInFastThrow 优化.RuntimeException 频繁出现,就会省略掉堆栈,比如 NullPointerException ClassCastException ArrayIndexOutOfBoundsException 等等.
    你往前找到最开始出现这个异常的日志,那里就有堆栈信息
    Need4more
        6
    Need4more  
       20 小时 13 分钟前
    #2 、#5 正解
    jvm 针对高频异常会复用预分配实例以提升性能。若需完整堆栈,需显式禁用参数-XX:-OmitStackTraceInFastThrow
    prosgtsr
        7
    prosgtsr  
       6 小时 34 分钟前 via iPhone
    我们也有这个问题,学习了
    Edward4074
        8
    Edward4074  
       5 小时 53 分钟前
    前阵子也碰到这个问题,问下 AI 就好了
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2711 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 06:52 · PVG 14:52 · LAX 22:52 · JFK 01:52
    ♥ Do have faith in what you're doing.