2017-01-18 5 views
0

Мое приложение регистрирует события ошибки на разных уровнях ведения журнала. ERR1 & ERR2 - уровень DEBUG. ERR3 - уровень INFO. ERR4 - уровень ERROR.Как включить нормально игнорируемое событие журнала DEBUG в журнале wildfly?

Как настроить подсистему регистрации в Wildfly для ведения журнала ERR2 независимо от того, на каком уровне настроен корневой регистратор, не изменяя, какие другие события из моего приложения регистрируются?

Так что, если мой корень регистратор находится на уровне DEBUG я должен видеть:

18:31:09,476 DEBUG [org.myapp] (default task-1) ERR1: Test 
18:31:09,476 DEBUG [org.myapp] (default task-1) ERR2: Test 
18:31:09,476 INFO [org.myapp] (default task-1) ERR3: Test 
18:31:09,476 ERROR [org.myapp] (default task-1) ERR4: Test 

Но если мой корень регистратор находится на уровне ERROR я должен видеть:

18:31:09,476 DEBUG [org.myapp] (default task-1) ERR2: Test 
18:31:09,476 ERROR [org.myapp] (default task-1) ERR4: Test 

Я попытался это:

<logger category="org.myapp"> 
    <filter-spec value="match(&quot;ERR2&quot;))"/> 
    <handlers> 
     <handler name="CONSOLE"/> 
    </handlers> 
</logger> 

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

<logger category="org.myapp"> 
    <filter-spec value="any(match(&quot;ERR2&quot;)),levels(ERROR))"/> 
    <handlers> 
     <handler name="CONSOLE"/> 
    </handlers> 
</logger> 

который находится ближе, так как я получаю ERR2 и все события на уровне ERROR, но это требует от меня, чтобы сохранить записи в levels в синхронизации с тем, что мой уровень корневой регистратор. Поэтому, если я изменил корневой журнал на INFO и забуду изменить журнал регистрации org.myapp, я не буду пропускать все события INFO из org.myapp.

Итак, что лучше всего начать с включения событий ERR2 в мои журналы, не затрагивая другие события в моем пакете?

ответ

0

Следует отметить, что фильтры на регистраторах не наследуются. Таким образом, у вас есть регистратор с именем com.myapp.other, фильтр не будет использоваться.

Если это не проблема, вы можете сделать обратное совпадение в спецификации фильтра. Что-то вроде not(match("ERR1|ERR2"). Команда CLI будет выглядеть примерно так:

/subsystem=logging/logger=com.myapp:write-attribute(name=filter-spec, value=not(match("ERR1|ERR2"))) 
Смежные вопросы