如何用一个appender只记录2个级别?

时间:2014-10-19 15:08:28

标签: logging log4j2

我有一个log4j2配置,只记录那些级别为ERROR的条目:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%msg%n"/>
            <ThresholdFilter level="ERROR" />
        </Console>
        <File name="MyFile" fileName="${sys:logFilename}" immediateFlush="false" append="false">
            <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="MyFile"/>
        </Root>
    </Loggers>
</Configuration>

相反,我想要登录控制ERRORINFO级别,但没有其他级别。我该如何配置?

1 个答案:

答案 0 :(得分:0)

步骤1是确保appender接收您希望它记录的所有事件。您已将根记录器设置为DEBUG,以便完成该部分。好。

第2步是过滤掉该appender的所有不需要的日志事件。

<Console name="Console" target="SYSTEM_OUT">
    <PatternLayout pattern="%msg%n" />
    <Filters>

        <!-- First deny warn and fatal messages -->
        <ThresholdFilter level="warn"  onMatch="DENY" onMismatch="NEUTRAL"/>
        <ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/>

        <!-- Then from the remainder, 
             accept info, warn, error, fatal (actually only INFO & ERROR are left)
             and deny debug/trace -->
        <ThresholdFilter level="info"  onMatch="ACCEPT" onMismatch="DENY"/>
        <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
    </Filters>
</Console>