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
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

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

相关文章

发表评论:

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

«    2024年10月    »
123456
78910111213
14151617181920
21222324252627
28293031

搜索

控制面板

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

最新留言

文章归档

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