Q10:一つのログを複数のファイルに出力するには?

例えばINFOレベル以上のログを出力するファイルと、ERROR以上のログを出力するファイルの2種類生成し、一つは時系列でログを確認する用途、もう一つはエラー情報のみ確認する用途、といったように用途毎にログを出力するケースもあるでしょう。

この場合、ERRORレベル以上のログは2つのファイルに出力されることになりますが、これは単にappenderをロガーに複数設定するだけで可能です。

以下はINFOレベル以上のログを info.log に出力し、ERROR以上のログを error.log に出力する設定です。

<?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_INFO" class="org.apache.log4j.RollingFileAppender">
    <param name="Threshold" value="INFO" />
    <param name="File"   value="log/info.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="FILE_ERROR" class="org.apache.log4j.RollingFileAppender">
    <param name="Threshold" value="ERROR" />
    <param name="File"   value="log/error.log" />
    <param name="Append" value="true" />                
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/>
    </layout>       
  </appender>

  <root>
    <level value ="info" />
    <appender-ref ref="FILE_INFO" />
    <appender-ref ref="FILE_ERROR" />
  </root>

</log4j:configuration>

トップページへ戻る