Java 在org.slf4j.Logger中显示以下详细信息的最佳方式是什么?

Java 在org.slf4j.Logger中显示以下详细信息的最佳方式是什么?,java,logging,slf4j,Java,Logging,Slf4j,在org.slf4j.Logger中显示以下详细信息的最佳方式是什么 logger.info(problemCount + " problem entries deleted for the Object: " + id ); 这是信息,我想在一段时间内显示这些更详细的信息,通过查看日志来帮助解决问题 我知道有些参考文献说应该使用内置的字符串格式,而不是像下面这样的字符串连接 logger.info(String.format("%d problem entrie

在org.slf4j.Logger中显示以下详细信息的最佳方式是什么

logger.info(problemCount + " problem entries deleted for the Object: " + id );
这是信息,我想在一段时间内显示这些更详细的信息,通过查看日志来帮助解决问题

我知道有些参考文献说应该使用内置的字符串格式,而不是像下面这样的字符串连接

logger.info(String.format("%d problem entries deleted for the Object: %s ",problemCount, id));
是否有一种使用org.slf4j.Logger在java中编写此类日志语句的有效方法

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


是的,你也可以这样做

logger.info( "{} problem entries deleted for the Object: {}",problemCount , id );
第一:是:

Simple Logging Facade for Java(SLF4J)作为各种日志框架(例如Java.util.Logging、logback、log4j)的简单Facade或抽象,允许最终用户在部署时插入所需的日志框架

因此,实际上是SLF4J背后的实现提高了或降低了效率

但是,使用占位符
{}
的整个要点是,在记录器决定是否记录了任何内容之前,不会进行任何评估

如果你喜欢这样:

logger.info(problemCount + " problem entries deleted for the Object: " + id );
始终进行字符串连接

但是,像这样做:

logger.info( "{} problem entries deleted for the Object: {}",problemCount , id );
让记录器决定是否进行了任何连接或更复杂的操作


因此-例如-如果您有日志级别警告和日志信息,则不会进行连接或任何其他评估,以使后者更有效。

这是有效的方法吗?一句或两句话,简要说明为什么您的解决方案更可取,这将对提问者和未来的读者有很大的帮助。@Eritrian你是说也要解释一些关于答案的事情吗?比如它是如何回答的works@RahulKumar请参阅帖子“为什么选择这种方法”。@MadhuTomy你可以参考他在评论中分享的厄立特里亚链接,帮助你更好地理解为什么这是一种有效的方法?