Java日志使用如何避免字符拼接及注意事项
😂 这篇文章最后更新于1461天前,您需要注意相关的内容是否还可用。
场景:
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); } });
其中<T> 接口仅包含一个无参的方法: T get() 。用来获取一个泛型参数指定类型的对象数据。由于这是一个函数式接口,这也就意味着对应的Lambda表达式需要“对外提供”一个符合泛型类型的对象
留言评论
暂无留言