java log 性能优化

首先俩个有什么区别呢?
log.trace("trace: " + exception.getMessage());

log.trace("trace: {}", exception.getMessage());

编译不会有问题,结果也一样

第一個是組合完才傳到method裡面 判斷log level是不是trace層級 然後才打印出來
第二個是先到method裡面判斷 log level是不是trace層級 是的話才組合 並打印出來
第二個通常會比第一個具有較佳的性能

配置文件中是否开启打印对应级别 log 配置
比如 dev 是 error 级别 log

logging:
  level:
    org.sang: error
        if(log.isErrorEnabled()){
            log.error("error: {}", "asa");
        }

        if(log.isTraceEnabled()){
            log.trace("trace: {}", "asa");
        }

        if(log.isInfoEnabled()){
            log.info("info: {}", "asa");
        }
        System.out.println(log.isTraceEnabled() +"_" + log.isInfoEnabled() + "_" + log.isErrorEnabled());

最后输出 error: asa
false_false_true

你可能感兴趣的:(java log 性能优化)