ライブラリが吐くLog4jログを黙らせる

2008-07-23 - きしだのはてな

rootカテゴリにNullAppenderを設定すると幸せになれるらしい。log4j.xmlに以下のように設定

    <appender name="empty" class="org.apache.log4j.varia.NullAppender">
        <param name="threshold" value="debug"/>
    </appender>

    <root>
        <level value="fatal" />
        <appender-ref ref="empty" />
    </root>

自分の作ったクラスのカテゴリには別のアペンダを設定

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="threshold" value="debug"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d [%t] %m %n"/>
        </layout>
    </appender>

    <category name="jp.paulownia" additivity="false">
        <priority value="debug" />
        <appender-ref ref="console"/>
    </category>

こうするとjp.paulowniaパッケージ以下のクラスのログのみがコンソールに出力される。

og4j.xmllog4j.propertiesが両方クラスパスにあるとlog4j.xmlの設定を使うそうだ。log4j.propertiesの書式はわからん。

と思ったけど

velocity.logを吐き出す話でしたか。VelocityServletを使ってWebアプリに組み込むとき(VelocityEngineクラスを使うとき)はこの方法でいいんだけど、Velocityクラスを使っているとこれではダメだったような気がする…