Как сделать, чтобы 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 или выше.

Другие вопросы по тегам