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 действительно лучше без фильтров, так как помогает видеть картину при ошибке в целом виде.