Java 在org.slf4j.Logger中显示以下详细信息的最佳方式是什么?
在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
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你可以参考他在评论中分享的厄立特里亚链接,帮助你更好地理解为什么这是一种有效的方法?