Из любопытства - почему API-интерфейсы ведения журналов не реализуют printf () - подобные методы ведения журнала? - PullRequest
9 голосов
/ 26 декабря 2011

Будь то 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 и т. д.)

1 Ответ

7 голосов
/ 26 декабря 2011

slf4j делает.См. http://www.slf4j.org/apidocs/org/slf4j/Logger.html. Это одно из главных (для меня) преимуществ slf4j перед log4j.Это исключает необходимость везде isDebugEnabled().

РЕДАКТИРОВАНИЕ:

Документация slf4j объясняет, почему он не использует стандартное форматирование из JDK:

SLF4J использует собственную реализацию форматирования сообщений, которая отличается от реализации на платформе Java.Это оправдано тем фактом, что реализация SLF4J работает примерно в 10 раз быстрее, но за счет нестандартности и меньшей гибкости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...