2011-12-26 7 views
8

Ya se trate de java.util.logging, commons-logging, log4j, e incluso el más reciente slf4j y logback, ninguna de estas API proponen métodos tales como, por ejemplo:Por curiosidad: ¿por qué las API de registro no implementan los métodos de registro de tipo printf()?

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

donde format es una cadena analizada usando Formatter. En cambio, se quedan con MessageFormat.

Entiendo que entraría en conflicto con prototipos existentes, entonces ¿por qué no debugf() o similar, pero por qué no hay ningún método dado que Formatter es tan antiguo como Java 1.5?

¿Es por razones de rendimiento, compatibilidad con versiones anteriores ...?

(nota, estoy realmente hablando de Formatter, es decir, incluyendo los marcadores de posición como %s, %02x etc)

Respuesta

7

slf4j hace. Ver http://www.slf4j.org/apidocs/org/slf4j/Logger.html. Es una de las principales ventajas (para mí) de slf4j sobre log4j. Evita la necesidad de isDebugEnabled() en todas partes.

EDIT:

El slf4j documentation explica por qué no utiliza el formato estándar de la JDK:

SLF4J utiliza su propio mensaje de formateo aplicación que difiere de la de la plataforma Java. Esto se justifica por el hecho de que la implementación de SLF4J se realiza unas 10 veces más rápido pero a un costo de ser no estándar y menos flexible.

+2

Bueno, no es que se puede ver: se usa '' {} para marcadores de posición, no, por ejemplo, '% s' o'% d' o algo similar – fge

+1

Mucha gente odia% s debido a consideraciones de i18n, y cree que el formato de mensaje java como {0} et al. es superior – bmargulies

+0

OK. Pensé que solo estabas preguntando sobre el uso de formatos (en general), y no específicamente sobre los formatos de formateador. –

Cuestiones relacionadas