Как сделать, чтобы Wildfly 9 регистрировал категории с различными уровнями от root-logger?
Я прочитал несколько постов о подобных проблемах, но никто не смог мне помочь. Я использую Wildfly 9.0.2 и хочу настроить его так:
my.project.category = INFO
my.especial.project.category = DEBUG
остальное = ПРЕДУПРЕЖДЕНИЕ
Что я пытаюсь, безуспешно
<subsystem xmlns="urn:jboss:domain:logging:3.0">
<console-handler name="MY_DEBUGGER_HANDLER">
<level name="DEBUG"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<console-handler name="MY_INFO_HANDLER">
<level name="INFO"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<console-handler name="CONSOLE">
<level name="WARN"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<logger category="my.project.category" use-parent-handlers="false">
<level name="INFO"/>
<handlers>
<handler name="MY_INFO_HANDLER"/>
</handlers>
</logger>
<logger category="my.especial.project.category" use-parent-handlers="false">
<level name="DEBUG"/>
<handlers>
<handler name="MY_DEBUGGER_HANDLER"/>
</handlers>
</logger>
<root-logger>
<level name="DEBUG"/>
<handlers>
<handler name="CONSOLE"/>
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
</formatter>
<formatter name="COLOR-PATTERN">
<pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
</formatter>
</subsystem>
Проблема в том, что Wildfly отказывается регистрировать мои категории, если я не изменю уровень обработчика CONSOLE или не добавлю свои маркеры в root-logger, который начинает регистрировать все категории с этим уровнем.
Можете ли вы пролить свет здесь и помочь мне?
Спасибо!
1 ответ
Сам обработчик должен быть установлен на самый низкий уровень, который вы хотите зарегистрировать. Например по умолчанию CONSOLE
обработчик, если вы хотите увидеть DEBUG
сообщения, которые вам понадобятся, чтобы установить уровень обработчика как минимум DEBUG
,
В приведенной выше конфигурации у вас есть root-logger
в DEBUG
Это означает, что любая неопределенная категория будет регистрировать отладочные сообщения. Обычно вы не хотите, чтобы уровень корневого логгера устанавливался на этом низком уровне, так как это будет влиять на производительность.
Учитывая ваши требования и предполагая конфигурацию по умолчанию, а не конфигурацию выше, следующие команды CLI должны получить конфигурацию, которую вы ищете. Обратите внимание, что не обязательно и не рекомендуется создавать несколько консольных обработчиков. Лучше всего позволить логгеру контролировать уровень.
my.project.category = INFO my.especial.project.category = ОТЛАДКА остальные = ПРЕДУПРЕЖДЕНИЕ
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=level, value=DEBUG)
/subsystem=logging/logger=my.project.category:add(level=INFO)
/subsystem=logging/logger=my.especial.project.category:add(level=DEBUG)
/subsystem=logging/root-logger=ROOT:write-attribute(name=level, value=WARN)
То, что сделало бы вышеупомянутое, должно позволить обработчику консоли регистрировать любые сообщения DEBUG
или выше. Ваш my.project.category
войдет в INFO
и ваш my.especial.project.category
войдет в DEBUG
, Все остальные неопределенные регистраторы будут только регистрироваться WARN
или выше.