出于好奇 – 为什么不记录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倍,但代价是非标准且灵活性较低。