2015-06-22 4 views
2

Я использую log4j v1.2.14 для входа в мой проект, и я также использую Java 7String.format(), чтобы поместить переменные в мой вывод. В настоящее время я пишуLog4j Неявное форматирование строк

LOGGER.info(String.format("Your var is [%s] and you are [%s]", myVar, myVar1)); 

Действительно ли это лучший способ вывода строк? Я чувствую, что log4j должен это реализовать неявно, как показано ниже:

LOGGER.info("Your var is [%s] and you are [%s]", myVar, myVar1); 

ли я что-то пропустил? Кроме того, существуют ли какие-либо фреймворки Java, поддерживающие это?

+2

Посмотрите на slf4j, который, как я думаю, реализует этот подход. –

+0

. Найди пример и отправьте ответ, я могу принять :-) – Rossiar

ответ

2

api предоставляет «parameterized logging», что позволяет делать именно это, хотя и с немного отличающимся синтаксисом. Пример есть:

logger.debug("Value {} was inserted between {} and {}.", newVal, below, above); 

Для реализации можно использовать Logback, который реализует SLF4J изначально, или SLF4J привязок, чтобы связаться с log4j или других регистраторов. The User Manual объясняет это, наряду с кратким примером.

0

Btw В этом сценарии нет большой разницы между использованием +, чтобы добавить переменные в строку и String.format - если вы действительно не хотите повторно использовать «Ваш var is ...» во всех ваших журналах.

SLF4J позволяет войти в

log.info("Your var is {} and you are {}", myVar, myVar1);

Обратите внимание на использование {} вместо печати форматтеров. Также для этого требуется Java> = 1.5

+0

Помимо моих личных предпочтений рекомендуется использовать 'String.format()', обычно потому, что его легче читать и изменять: http://stackoverflow.com/questions/925423/is-it-better-practice-to-use-string-format-over-string-concatenation-in-java – Rossiar

Смежные вопросы