slf4j: отладочное поведение несовместимо? - PullRequest
0 голосов
/ 25 апреля 2011

Я использую slf4j + log4j с моей библиотекой.

Я использую это в быстром приложении, где меня не волнует настройка ведения журнала ... или, по крайней мере, я этого не сделалЯ думаю, что мне не все равно.

Если я не настрою log4j, я получу стандартное предупреждение

log4j:WARN No appenders could be found for logger com.xyz.abcdbabble
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

, что нормально.Если я тогда сделаю

logger.debug("Blah blah blah")

, то регистратор ничего не распечатает.Отлично!

Но если я сделаю

if (logger.isDebugEnabled())
{
    System.out.println("print some complex stuff:");
    print_some_complex_stuff();
}

, то содержимое в скобках будет выполнено.Что дает?

Я ищу способ определить, следует ли распечатывать что-то, что должно иметь эквивалентное разрешение для logger.debug(), даже если log4j не настроен в конечном приложении.Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 25 апреля 2011

Вместо того, чтобы пытаться выяснить логику конфигурации по умолчанию для log4j, я бы поместил в файл конфигурации (log4j.properties), например:

log4j.rootLogger=debug, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

По крайней мере, это дает вам контроль.

0 голосов
/ 02 мая 2011

Вместо связывания с log4j связывайте его с «простым» бэкэндом из дистрибутива slf4j.Тогда все работает так, как вы хотите, и пользователи не могут повозиться.

...