出于好奇 – 为什么不记录API实现printf() – 就像记录方法一样?

无论是java.util.logging,commons-logging,log4j,还是最新的slf4j和logback,这些API都没有提出诸如以下方法:

void debug(String format, Object... args); 

其中format是使用Formatter解析的字符串。 相反,他们坚持使用MessageFormat

我知道它会与现有的原型冲突,所以为什么不debugf()等,但为什么没有任何这样的方法,因为Formatter和Java 1.5一样古老?

是出于性能原因,向后兼容……?

(注意,我真的在谈论Formatter ,即包括占位符,如%s%02x等)

slf4j。 见http://www.slf4j.org/apidocs/org/slf4j/Logger.html 。 这是slf4j优于log4j的主要优势之一(对我而言)。 它避免了到处都需要isDebugEnabled()

编辑:

slf4j文档解释了为什么它不使用JDK的标准格式:

SLF4J使用自己的消息格式化实现,这与Java平台的格式不同。 这是合理的,因为SLF4J的实现速度提高了大约10倍,但代价是非标准且灵活性较低。