技術空間

log4j

ログの出力先やファイル名をプログラムから変える方法


TOP > log4j > ログの出力先やファイル名をプログラムから変える方法



■ログの出力先やファイル名にプレースホルダを使用する

ログの出力先やファイル名は設定ファイルに記述するが、それらを動的に変更したい場合はプレースホルダを使用する。

log4j設定ファイルは${}形式でプレースホルダが利用できる。置換文字列はシステムプロパティに設定するか、起動オプションでの指定も可能(例:-Dtoday=/20160101)。

出力先のディレクトリ名が日付になっている場合などに便利。

以下サンプル。

log4j.xml
    <appender name="file" class="org.apache.log4j.FileAppender">
         <param name="File" value=".${today}/sample.log" />
         <param name="Append" value="true" />
         <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%m%n" />
         </layout>
    </appender>
コード
package test;

import java.net.URL;

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

public class Sample {

    private static Logger logger = Logger.getLogger(Sample.class);
    
    public static void main(String[] args){
        
        System.setProperty("today", "/20160101");
        URL url = Thread.currentThread().getContextClassLoader().getResource("test/mylog4j.xml");
        DOMConfigurator.configure(url);
        
        logger.debug("sampleのログ");
    }
}

上記サンプルの場合、${today}は"/20160101"に置換されるため、"./20160101/sample.log"に出力される。



TOP > log4j > ログの出力先やファイル名をプログラムから変える方法

Tweet ̃Gg[͂ĂȃubN}[Nɒlj
技術空間