Q4:サードパーティのライブラリを使用したときの「log4j:WARN No appenders・・・」メッセージを表示させないようにするには

以下のように root 要素を記述しなかった場合、

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

  <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%C (%F:%L) - %m%n"/>
    </layout>           
  </appender>
  
  <logger name="sample">
    <level value ="debug" />
    <appender-ref ref="STDOUT" />
  </logger>

</log4j:configuration>

サードパーティのライブラリ利用時に以下のようなメッセージが表示されることがあります。

log4j:WARN No appenders could be found for logger (org.apache.commons.httpclient.HttpClient).
log4j:WARN Please initialize the log4j system properly.

一般的には root 要素は使用せず、logger 要素によって出力対象を絞り込むことによって不要なログが出力されないようにします。ただ、root 要素を省略してもログイベント自体は発生するので、結果的に上記の警告が表示されます。

これを回避するためには、サードパーティライブラリ利用時にログイベントが発生しないようにすればよいため、次の root 要素を log4j.xml に加えます。

<root>
  <level value ="off" />
</root>

ただし、各 logger 要素で level要素を定義し、root のログレベル"off"を上書きするのを忘れないようにして下さい。


トップページへ戻る