Java 日志中异常信息缺少堆栈信息
Java JVM About 1,219 words现象
生产环境下日志输出的异常只有一行异常名称,没有具体的堆栈信息。
示例
public class OmitStackTraceInFastThrowDemo {
    public static void main(String[] args) {
        for (long i = 0; i < 10000000; i++) {
            try {
                int tmp = 1/0;
            } catch (Exception e) {
                if (null != e.getStackTrace() && e.getStackTrace().length == 0) {
                    e.printStackTrace();
                    return;
                }
            }
        }
    }
}输出
java.lang.ArithmeticException正常输出
java.lang.ArithmeticException: / by zero
    at OmitStackTraceInFastThrowDemo.main(OmitStackTraceInFastThrowDemo.java:6)OmitStackTraceInFastThrow
快速抛出异常,忽略堆栈信息。
默认是启用的,即:大量出现相同地方的异常时,只输出异常名称,不输出堆栈信息。
❯ java -XX:+PrintFlagsFinal -version | grep OmitStackTraceInFastThrow
     bool OmitStackTraceInFastThrow                = true                                      {product} {default}
openjdk version "17.0.7" 2023-04-18 LTS
OpenJDK Runtime Environment Corretto-17.0.7.7.1 (build 17.0.7+7-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.7.7.1 (build 17.0.7+7-LTS, mixed mode, sharing)建议
生产环境如果有大量日志输出,异常信息很容易被冲掉,建议关闭这个选项。即每次都打印堆栈信息。
-XX:-OmitStackTraceInFastThrow参考
                Views: 1,379 · Posted: 2023-12-13
            
            ————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
 
        Loading...