Log4j2 разные файлы логов для разных уровней

Хотел разнести уровни по разным файлам - уровни INFO и ERROR. Однако применяя фильтр ThresholdFilter Log4j2 дублирует сообщения уровня ERROR.

<Configuration status="debug" strict="true"
               name="XMLConfigTest" packages="org.apache.logging.log4j.test">
    <Filter type="ThresholdFilter" level="trace" />
    <Appenders>
        <RollingFile name="rollingError"
                     fileName="logs/error.log"
                     filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
            <Filters>
                <Filter type="ThresholdFilter" level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>
        <RollingFile name="rollingInfo"
                     fileName="logs/info.log"
                     filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
            <Filters>
                <Filter type="ThresholdFilter" level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="rollingInfo" />
            <AppenderRef ref="rollingError" />
        </Root>
    </Loggers>

</Configuration>

Ответы (1 шт):

Автор решения: Fezas

Разнесение по уровню сообщений для реализации своих журналов деятельности пользователя оказалось не лучшей идеей. Самое лучшее использовать фильтр типа

<RegexFilter regex=".*LOGIN.*" onMatch="ACCEPT" onMismatch="DENY"/>

В этом случае получаем удобный журнал авторизации, а вот второй лог уровня INFO действительно лучше без фильтров, так как помогает видеть картину при ошибке в целом виде.

→ Ссылка