5

ロギングにlog4jを使用しています。重大度ごとに個別のロギングを使用する必要があるシナリオがあります。たとえば、パッケージfooの場合、重大度がERRORのメッセージをコンソールに出力する必要がありますが、重大度がWARNのメッセージをログファイルに出力する必要があります。log4j.xmlを同じように構成するにはどうすればよいですか。

4

1 に答える 1

6

タスクに 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>
于 2012-08-30T19:19:39.400 に答える