Аддитивность ложь с различными уровнями журнала, какой уровень журнала используется? - PullRequest
0 голосов
/ 14 июня 2019

, пожалуйста, рассмотрите следующий фрагмент:

   <AsyncLogger name="com.example.Section" level="WARN" additivity="false">
        <AppenderRef ref="Logger1" />

   </AsyncLogger>

     <AsyncLogger name="com.example.Section2" level="INFO"/>

    <AsyncRoot level="ALL">
        <AppenderRef ref="Logger1" />
    </AsyncRoot>

Правильно ли я считаю, что Section1 будет зарегистрирован на уровне предупреждения.И Раздел 2 на ВСЕХ уровнях (не информация)?

ОБНОВЛЕНИЕ: Я имел в виду уровень предупреждения или выше для Раздела 1.

1 Ответ

0 голосов
/ 15 июня 2019

Нет, это не правильно.

Любые события с уровнем WARN или более конкретным (ERROR или FATAL), которые отправляются в регистратор com.example.Section, будут приняты этим регистратором и отправлены его получателям. Поскольку аддитивность равна false, для этого регистратора события не отправляются никаким добавителям его предков.

Любые события с уровнем INFO или более конкретным (WARN, ERROR, FATAL), отправленные на регистратор "com.example.Section2", будут приняты этим регистратором и отправлены его получателям , Так как аддитивность равна true, по умолчанию события, принятые этим логгером, также будут передаваться аппендерам его предков, которые будут только теми из корневого логгера.

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

Руководство log4j2 содержит примеры и объяснения аддитивности , которые также могут помочь вам понять это. Есть некоторые другие вопросы о стековом потоке относительно аддитивности, которые также могут быть полезны.

...