27

パッケージcom.foo.barのクラスから生成されたすべてのログメッセージがbar.logに移動し、パッケージcom.bar.blatzのクラスから生成されたすべてのログメッセージがblatz.logに移動するようにlog4jを設定したいと思います。

質問

  • log4j.xmlを使用してこれを行うにはどうすればよいですか?
  • プロパティファイルを使用してその可能性を知っていますが、XML構成を使用してそれを行うにはどうすればよいですか?
4

2 に答える 2

39

これは、同様の質問に対する私の回答に基づいています。

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <!-- general application log -->
    <appender name="BarLogFile" class="org.apache.log4j.FileAppender">
        <param name="File" value="bar.log" />
        <param name="Threshold" value="INFO" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
        </layout>
    </appender> 

    <!-- additional fooSystem logging -->
    <appender name="BlatzLogFile" class="org.apache.log4j.FileAppender">
        <param name="File" value="blatz.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
        </layout>
    </appender>

    <logger name="com.foo.bar">
        <appender-ref ref="BarLogFile"/>
    </logger>

    <logger name="com.bar.blatz">
        <appender-ref ref="BlatzLogFile"/>
    </logger>

    <root>
        <level value="INFO"/>
        <!-- no appender, output will be swallowed (I think) -->
    </root>
</log4j:configuration>

ルート要素にappender-refを追加すると、com.foo.barなどのメッセージも受信します。ロガーで「additivity="false"」を指定することで、これを停止できます。

于 2009-05-19T00:39:59.667 に答える
-4
  <root>
        <level value="INFO"/>
        <!-- no appender, output will be swallowed (I think) -->
  </root>

ここにアペンダーを追加できます。アプリケーションがルートロガーを使用している場合に機能します。たとえば、クォーツスケジューラAPI。

于 2012-04-24T12:45:20.150 に答える