特定记录器的级别

时间:2012-08-30 06:08:25

标签: log4j

我正在使用log4j进行日志记录。我有一个场景,我必须使用不同严重程度的单独日志记录。例如,对于包foo,我必须在控制台中打印严重性为ERROR的消息,而我必须在日志文件中打印严重性为WARN的消息。如何配置我的log4j.xml。

1 个答案:

答案 0 :(得分:5)

您可以使用LevelMatchFilter完成任务。此外,你不应该忘记使用另一个过滤器 - DenyAllFilter - 作为过滤器链中的最后一个过滤器。

您的log4j.xml将如下所示:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.SimpleLayout" />
        <filter class="org.apache.log4j.varia.LevelMatchFilter">
            <param name="LevelToMatch" value="ERROR" />
            <param name="AcceptOnMatch" value="true" />
        </filter>
        <filter class="org.apache.log4j.varia.DenyAllFilter" />     
    </appender>

    <appender name="fileAppender" class="org.apache.log4j.FileAppender">
        <param name="File" value="error.log" /> 
        <layout class="org.apache.log4j.SimpleLayout" />
        <filter class="org.apache.log4j.varia.LevelMatchFilter">
            <param name="LevelToMatch" value="WARN" />
            <param name="AcceptOnMatch" value="true" />
        </filter>
        <filter class="org.apache.log4j.varia.DenyAllFilter" />     
    </appender>

    <logger name="foo">
         <level value="WARN" />
         <appender-ref ref="consoleAppender" />
         <appender-ref ref="fileAppender" />
    </logger>
</log4j:configuration>