Log4jでログレベルによって出力先を変更する

  • 投稿日:
  • カテゴリ:

いろいろな方法がありますが、そのうちの一つということで。
InfoLogやErrorLogが混在していると見づらいです。もちろんchainsawとか使えば良いんですが。

そんなわけで、重要なログを別ファイルに追加出力をしてみたいと思います。

 

 

LogLevelSample.java

package com.example;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class LogLevelSample {

    public static void main(String[] args) {
        final Log log = LogFactory.getLog(LogLevelSample.class);
        log.trace("trace log");
        log.debug("debug log");
        log.info("info log");
        log.warn("warn log");
        log.error("error log");
        log.fatal("fatal log");
    }

}

log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="https://jakarta.apache.org/log4j/">

    <appender name="FILEOUT" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${java.io.tmpdir}/logs/example.log" />
        <param name="Append" value="true" />
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss} [%p] %c:%L - %m%n"/>
        </layout>
    </appender>
    <appender name="FILEOUT_IMPORTANT" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${java.io.tmpdir}/logs/example-imp.log" />
        <param name="Append" value="true" />
        <param name="Threshold" value="ERROR" />
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss} [%p] %c:%L - %m%n"/>
        </layout>
    </appender>

    <category name="com.example" additivity="false">
      <priority value="trace" />
      <appender-ref ref="FILEOUT" />
      <appender-ref ref="FILEOUT_IMPORTANT" />
    </category>

    <root>
       <priority value ="info" />
       <appender-ref ref="FILEOUT" />
    </root>

</log4j:configuration>

出力ファイル(example.log)

2008/04/05 12:00:52 [DEBUG] com.example.LogLevelSample:18 - trace log
2008/04/05 12:00:52 [DEBUG] com.example.LogLevelSample:19 - debug log
2008/04/05 12:00:52 [INFO] com.example.LogLevelSample:20 - info log
2008/04/05 12:00:52 [WARN] com.example.LogLevelSample:21 - warn log
2008/04/05 12:00:52 [ERROR] com.example.LogLevelSample:22 - error log
2008/04/05 12:00:52 [FATAL] com.example.LogLevelSample:23 - fatal log

出力ファイル(example-imp.log)

2008/04/05 12:00:52 [ERROR] com.example.LogLevelSample:22 - error log
2008/04/05 12:00:52 [FATAL] com.example.LogLevelSample:23 - fatal log
新しいサイトもよろしくお願いします!