Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 出于好奇——为什么不';日志API实现printf()-类似于日志方法吗?_Java_Logging - Fatal编程技术网

Java 出于好奇——为什么不';日志API实现printf()-类似于日志方法吗?

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一样古老,为什么没有这样的方法呢

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

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混合在选择器数字工具中。