Java 日志使用如何避免字符拼接及注意事项

场景:

Java 日志使用如何避免字符拼接及注意事项
String os="macOS";
// 不推荐,在不符合该日志级别范围内字符串拼接操作还会执行会影响性能
logger.debug(" 系统 "+os); 
// 改写成 {} 占位符的懒求值方式,建议此操作
logger.debug(" 系统 {}", os);

遇到如下情况又是一次拼接或者是调用一个方法该咋办呢

logger.debug(" 系统 {}", " 平台:"+os);
logger.debug(" 系统 {}", toJson(os));

在之前介绍 lamada 的帖子里(Lamada 学习小记 )用 Lambda 延迟加载来避免日志 log 的字符拼接。借助万能的 lamada 吧!

logger.debug(" 系统 {}", () -> (" 平台:"+os));
logger.debug(" 系统 {}", () -> toJson(os));

把它还原成匿名内部类的形式会发现

logger.info(" 系统 {}",
        new Supplier<Object>() {
            @Override
            public Object get() {                return (" 平台:" + os);
            }
        });

其中 java.util.function.Supplier<T> 接口仅包含一个无参的方法: T get() 。用来获取一个泛型参数指定类型的对 象数据。由于这是一个函数式接口,这也就意味着对应的 Lambda 表达式需要“对外提供”一个符合泛型类型的对象 数据。

手机扫描二维码访问

    本文标题:《Java 日志使用如何避免字符拼接及注意事项》作者:极四维博客
    原文链接:https://cway.top/post/692.html
    特别注明外均为原创,转载请注明。

    分享到微信

    扫描二维码

    可在微信查看或分享至朋友圈。

    相关文章

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    «    2025年5月    »
    1234
    567891011
    12131415161718
    19202122232425
    262728293031

    搜索

    控制面板

    您好,欢迎到访网站!
      查看权限

    最新留言

    文章归档

    • 订阅本站的 RSS 2.0 新闻聚合