2013-09-19 2 views
0

У меня есть существующий пакет, в котором используется commons.logging. Я хотел бы установить logLevel для классов в комплекте во время тестирования плагина eclipse. Испытание не имеет или требует log4j как комплект. Поэтому мне нужно знать, как настроить логгер jsr-47, видимый внутри пакета.Как настроить commons.logging для пакета, поддерживаемого jsr-47?

ответ

0

JSR-47 делится одним менеджером журналов на всей JVM. Клиент должен инициализировать свойство протоколирования из ресурса:

InputStream resourceAsStream = getClass().getResourceAsStream("logging.properties"); 
LogManager.getLogManager().readConfiguration(resourceAsStream); 

ресурса должен обрабатывать два общих яву лесозаготовительных подводных камней:

  1. Установите корневой регистратор, чтобы позволить более точному выводу (в противном случае вещь получить подавила здесь)
  2. Установите пакет регистратора, чтобы позволить более тонкий выход (в противном случае вещи получить подавил здесь)

это выглядит следующим образом:

handlers = java.util.logging.ConsoleHandler 
.level=FINEST 
test=FINEST 
java.util.logging.ConsoleHandler.level = FINEST 

Мишень активизирует и использует commons.logging обычным способом:

log = LogFactory.getLog(getClass().getName(); 
log.debug("Badaboom"); 

Выход затем переходит к общему LogManager, а затем в консоли.

Caveat: Конфигурация, которая считывается для теста, может быть динамически изменена в других местах кода. Если есть запах этого события, зарегистрируйте прослушиватель изменений свойств с помощью Менеджера и остановите код с точкой останова, чтобы найти код, изменяющий конфигурацию.

Примечание: На этом этапе также становится понятно, почему java.util.logging не очень хорошо подходит для OSGI: Тот же класс и, следовательно, имя регистратор может зарегистрировать с помощью различных пучков, накладывая настройки.

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