首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在org.slf4j.Logger中显示以下细节的最佳方法是什么?

在org.slf4j.Logger中显示以下细节的最佳方法是什么?
EN

Stack Overflow用户
提问于 2020-07-15 17:51:25
回答 2查看 121关注 0票数 3

在org.slf4j.Logger中显示以下细节的最佳方法是什么

代码语言:javascript
复制
logger.info(problemCount + " problem entries deleted for the Object: " + id );

这是信息,我想在一段时间内显示这些更精细的细节,通过查看日志来帮助解决问题。

我知道有一些引用说应该使用内置字符串格式,而不是字符串连接,如下所示

代码语言:javascript
复制
logger.info(String.format("%d problem entries deleted for the Object: %s ",problemCount, id));

是否有一种使用org.slf4j.Logger在java中编写这类日志语句的有效方法?

请参考下面的链接,了解为什么基于效率和性能,答案是首选的。

Logger slf4j advantages of formatting with {} instead of string concatenation

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-15 17:58:32

是的,你也可以这样做

代码语言:javascript
复制
logger.info( "{} problem entries deleted for the Object: {}",problemCount , id );
票数 3
EN

Stack Overflow用户

发布于 2020-07-15 18:28:10

首先:是:

简单日志外观(SLF4J)作为各种日志记录框架(例如java.util.logging、logback、log4j)的简单外观或抽象,允许最终用户在部署时插入所需的日志框架。

因此,实际上,正是SLF4J背后的实现使某些事情变得更有效率。

但是,使用占位符{}的要点是,在记录器决定是否记录任何内容之前,不进行任何计算。

如果你是这样的话

代码语言:javascript
复制
logger.info(problemCount + " problem entries deleted for the Object: " + id );

字符串连接始终是进行的。

但这样做就像:

代码语言:javascript
复制
logger.info( "{} problem entries deleted for the Object: {}",problemCount , id );

让记录器决定是否做了更复杂的事情。

因此--例如,如果您有日志级别的警告,并且您记录了信息,则没有进行连接或任何其他评估,从而提高了后者的效率。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62920933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档