Q2:ファイルと標準出力にログを出力するためには?

ファイル出力用と標準出力用のアペンダをappender要素で定義し、 root要素 からそれら2つのアペンダを append-ref 要素で参照します。

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

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

  <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
    <param name="File"   value="log/example.log" />
    <param name="Append" value="true" />                
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/>
    </layout>       
  </appender>

  <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern"
        value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
    </layout>           
  </appender>

  <root>
    <level value ="debug" />
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
  </root>

</log4j:configuration>

尚、上記の設定では DEBUG レベル以上のすべてのログがファイルと標準出力に出力されるため、サードパーティのライブラリがLog4j経由で出力するログも含まれてしまいます。

ログの出力対象を作成したクラスのみにしたい(ほとんどの場合こちらになるでしょう)場合は、root要素の代わりに logger要素を使用します。詳細は Q3:パッケージによって出力ファイルを分けるには?を参照して下さい。


トップページへ戻る