Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【Java】log4j2

log4j2

log4j2はJavaのロギングユーティリティであるlog4jの後継です。
厳密にはv1のlog4jがv2担っただけのものですが、プロパティファイルの命名やプロパティの設定方法などが一部新しくなっています。

Log4j – Apache Log4j 2 - Apache Log4j 2

Usage

Mavendependencyを追加する場合は以下。

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.11.1</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.11.1</version>
</dependency>

Source

LogManagerでロガーを取得できます。
Loggerオブジェクトは名称によって異なるインスタンスを扱い、ログも別々に出力されます。 Loggerによって、ファイルやコンソールなどの出力先や、ログのアーカイブの設定なども、後述するプロパティファイルの設定で別々に行うことができます。

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

... 

// Loggerオブジェクトの取得
Logger logger = LogManager.getLogger(Hoge.class);
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

// 簡単なLoggerのラッパークラス
public class LoggerWrapper {

    private Logger logger;

    private LoggerWrapper(String name) {
        logger = LogManager.getLogger(name);
    }

    public static LoggerWrapper getLogger(String name) {
        return new LoggerWrapper(name);
    }

    public void trace(Object message) {
        logger.trace(message);
    }

    public void debug(Object message) {
        logger.debug(message);
    }

    public void info(Object message) {
        logger.info(message);
    }

    public void warn(Object message) {
        logger.warn(message);
    }

    public void error(Object message) {
        logger.error(message);
    }

    public void fatal(Object message) {
        logger.fatal(message);
    }

        public void begin(String message){
                this.info("BEGIN : " + message);
        }

        public void end(String message){
                this.info("END : " + message);
        }
}

log4j2のプロパティファイル

log4j2の設定は以下のファイルをクラスパス配下に置くことで可能になります。

  • log4j2.properties
  • log4j2.yml
  • log4j2.json
  • log4j2.xml

設定ファイルはproperties > yaml > json > xml の優先度で適用されます。
詳細な設定方法は以下。

Log4j – Configuring Log4j 2 - Apache Log4j 2

参考

Log4j – Apache Log4j 2 - Apache Log4j 2