log4j2: уровень родительского регистратора ниже, чем дочернего регистратора - PullRequest
0 голосов
/ 04 сентября 2018

Я не уверен, что на этот вопрос уже был дан ответ. Я видел случаи с root, но я не уверен, применимо ли это к моему сценарию. Это мой пример файла журнала. Рассмотрим вариант 1:

<logger name="com.abc" level="warn" additivity="false">
  <appender-ref ref="Default"/>
</logger>
<logger name="com.abc.xyz" level="debug" additivity="false">
  <appender-ref ref="Default"/>
</logger>
<root level="error">
  <appender-ref ref="Console"/>
</root>

В приведенном выше случае дочерний пакет имеет более низкий уровень отладки, чем родительский. Поэтому, когда я запускаю свое приложение, я получаю журналы из пакета «com.abc.xyz» с уровнем отладки, а остальная часть приложения - с уровнем предупреждения. Однако, когда то же самое меняется, то есть рассмотрим Случай 2:

<logger name="com.abc" level="debug" additivity="false">
  <appender-ref ref="Default"/>
</logger>
<logger name="com.abc.xyz" level="warn" additivity="false">
  <appender-ref ref="Default"/>
</logger>
<root level="error">
  <appender-ref ref="Console"/>
</root>

В приведенном выше случае уровень средства ведения журнала дочернего пакета не учитывается, и все журналы из пакета "com.abc" регистрируются на уровне отладки. Есть ли какая-либо конфигурация, которая может использоваться для обеспечения того, чтобы уровень средства ведения журнала дочернего пакета имел больший приоритет по сравнению с уровнем родителей?

1 Ответ

0 голосов
/ 04 сентября 2018

У меня работает.

Важным моментом является то, что дочерний регистратор должен иметь additivity="false", но вы правильно поняли.

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

...