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

What is the best way to display the following details in org.slf4j.Logger?

在 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 中编写这些类型的日志语句?

请参阅下面的 link,了解为什么 answer 是基于效率和性能的首选。

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

是的,你也可以这样做

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

首先:SLF4J是:

The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time.

所以实际上是 SLF4J 背后的实现或多或少地提高了效率。

但是,使用占位符 {} 的全部意义在于,在记录器决定是否记录任何内容之前没有进行任何评估。

如果你喜欢这样:

logger.info(problemCount + " problem entries deleted for the Object: " + id );

始终进行字符串连接。

但这样做是这样的:

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

让记录器决定是否完成任何连接或更复杂的事情。

所以 - 例如 - 如果你有日志级别 warn 并且你记录 info 没有连接或任何其他评估完成使后者更有效率。