What filter should i use, to define particular level to be logged with apender? For example:
java:
LOGGER.debug("Debug message");
LOGGER.info("Info message");
LOGGER.warn("Warn message");
LOGGER.error("Error message");
LOGGER.fatal("Fatal message");
log4j2.xml:
<Configuration>
<Appenders>
<Console name="info-stdout-message">
<PatternLayout pattern="[%logger{36}] %message %n" />
<ThresholdFilter level="info"/>
</Console>
<Console name="detailed-stdout-message">
<PatternLayout pattern="[%logger{36}] [%level] %message %n" />
</Console>
<File name="file-appender" fileName="logs/debug.log">
<PatternLayout pattern="%d{HH:mm:ss dd.mm} [%t] [%-5level] %logger{36} - %msg %n" />
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="file-appender" level="debug" />
<AppenderRef ref="info-stdout-message" level="info"/>
<AppenderRef ref="detailed-stdout-message" level="info"/>
</Root>
</Loggers>
</Configuration>
The file output is fine, but in console I have such result:
[application.Main] [INFO] Info message
[application.Main] Info message
[application.Main] [WARN] Warn message
[application.Main] Warn message
[application.Main] [ERROR] Error message
[application.Main] Error message
[application.Main] [FATAL] Fatal message
[application.Main] Fatal message
but I need info-stdout-message
appender to output only INFO messages, while detailed-stdout-message
to output all EXEPT INFO. So the console output should looks like:
[application.Main] Info message
[application.Main] [WARN] Warn message
[application.Main] [ERROR] Error message
[application.Main] [FATAL] Fatal message
Can't find out how to prevent filters respect level inheritance. Is it possible to do this?
Here two console appenders. One logs all trace, debug and info levels to std_out, the other logs all warn, error and fatal levels to std_err. This is very useful e.g. within eclipse since std_err is displayed red.
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} (%6r) %-5p [%-7t] %F:%L %x - %m%n" />
<Filters>
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="ACCEPT" />
</Filters>
</Console>
<Console name="STDERR" target="SYSTEM_ERR">
<PatternLayout pattern="%d{HH:mm:ss.SSS} (%6r) %-5p [%-7t] %F:%L %x - %m%n" />
<Filters>
<ThresholdFilter level="WARN" onMatch="ACCEPT" />
</Filters>
</Console>