Я пытаюсь настроить мою установку log4j2 (версия 2.8.2) в веб-приложении Spring, но есть одна загвоздка, с которой я все еще не могу разобраться.Я пишу консольный приложение, чтобы разработчики могли видеть ОШИБКИ / ФАТАЛЬНЫЕ журналы красным и ИНФО черным , но я вижу ошибку два раза (один черным и один красным).
Это мой log4j2.xml
файл, я также черпал вдохновение из этого другого ответа , без везения:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n">
<Filters>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT" />
</Filters>
</PatternLayout>
</Console>
<Console name="ErrorConsole" target="SYSTEM_ERR">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n">
<Filters>
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
</PatternLayout>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console" />
<AppenderRef ref="ErrorConsole" level="error"/>
</Root>
</Loggers>
</Configuration>
При такой конфигурации, когда происходит исключение, он получаетрегистрируется два раза, по одному для каждого консольного приложения.
Правильно ли я использую ThresholdFilter?
Из документации Я прочитал:
onMatch String Action to take when the filter matches. May be ACCEPT, DENY or NEUTRAL. The default value is NEUTRAL.
onMismatch String Action to take when the filter does not match. May be ACCEPT, DENY or NEUTRAL. The default value is DENY.