首页 > 其他 > 详细

打印日志优化

时间:2021-01-07 19:03:42      阅读:30      评论:0      收藏:0      [点我收藏+]

一、示例代码

public static void main(String[] args) {
        ProvinceCityInfo provinceCityInfo = new ProvinceCityInfo();
        provinceCityInfo.setCityId(1);
        provinceCityInfo.setCityName("北京");

        log.info("provinceCityInfo is {}", JSON.toJSONString(provinceCityInfo));

        if (log.isInfoEnabled()) {
            log.info("provinceCityInfo is {}", JSON.toJSONString(provinceCityInfo));
        }

        log.info("provinceCityInfo is {}" + JSON.toJSONString(provinceCityInfo));
    }

 

二、log.isInfoEnabled()

1. log.info("provinceCityInfo is {}", JSON.toJSONString(provinceCityInfo)); 编译后其实是两行代码,先把对象序列化为JSON字符串,再打印

2. 如果不加log.isInfoEnabled(),即使把日志级别跳到了WARN,不打印info,也会序列化对象为JSON字符串

3. 加上了log.isInfoEnabled(),只是做了一次判断,比序列化性能高

技术分享图片

 

 

 

三、log.info拼接字符串后再打印和使用占位符的区别

1. 拼接字符串底层使用了StringBuilder,然后使用log.info(String s)打印

2. 直接使用占位符,使用log.info(String format, Object o)打印

3. 至少在代码层面,拼接字符串更耗费性能

技术分享图片

 

打印日志优化

原文:https://www.cnblogs.com/june0816/p/14246024.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!