Java 出于好奇——为什么不';日志API实现printf()-类似于日志方法吗?
无论是java.util.logging、commons logging、log4j,甚至是最新的slf4j和logback,这些API都没有提出如下方法:Java 出于好奇——为什么不';日志API实现printf()-类似于日志方法吗?,java,logging,Java,Logging,无论是java.util.logging、commons logging、log4j,甚至是最新的slf4j和logback,这些API都没有提出如下方法: void debug(String format, Object... args); 其中,format是使用Formatter解析的字符串。相反,他们坚持使用MessageFormat 我知道它会与现有的原型冲突,所以为什么不使用debugf()之类的方法呢?但是既然Formatter与Java 1.5一样古老,为什么没有这样的方法呢
void debug(String format, Object... args);
其中,format
是使用Formatter
解析的字符串。相反,他们坚持使用MessageFormat
我知道它会与现有的原型冲突,所以为什么不使用debugf()
之类的方法呢?但是既然Formatter
与Java 1.5一样古老,为什么没有这样的方法呢
是否出于性能原因,向后兼容性
(注意,我说的是格式化程序
,即包括占位符,如%s
,%02x
等)slf4j。看见这是slf4j相对于log4j的主要优势之一(对我来说)。它避免了到处都需要isDebugEnabled()
编辑:
解释了为什么它不使用JDK的标准格式:
SLF4J使用自己的消息格式化实现,这与
来自Java平台的。这是有道理的,因为
SLF4J的实现速度快了大约10倍,但代价很高
不标准,不灵活
嗯,我看不出来:它使用
{}
作为占位符,而不是,比如说,%s
或%d
或任何类似的东西。出于i18n的考虑,许多人讨厌%s,并且相信像{0}等java消息格式更优越。OK。我以为你只是在问如何使用格式(一般来说),而不是具体的格式化程序格式。@B argulies GNU已经用gettext解决了这个问题很久了,是吗?Java用{0}解决了这个问题。诚然,一些花哨的printf混合在选择器数字工具中。