Java > Log4j2の使い方

更新日 2012-11-10
広告
Log4jバージョン2の使い方を紹介します(version 2.0-beta2)。Log4jバージョン1よりもログ出力の性能が向上したとのこと。また、設定ファイルの自動リロード機能に対応しているとのことです。

基本的な使い方

サンプルプログラム MyApp.java を以下に示します。
package test.log4j2;

// バージョン1とはパッケージ名が違う。
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;

public class MyApp {
    // Loggerクラスを取得する。LogManagerクラスを使う。
    static Logger logger = LogManager.getLogger(MyApp.class.getName());

    public static void main(String[] args) {
        logger.trace("Start MyApp.");
        logger.error("error");
        logger.trace("Finish MyApp.");
    }

}
MyApp.javaをコンパイルします。公式サイトからダウンロードしたLog4j2には、たくさんのjarファイルが含まれていますが、MyApp.javaのコンパイル・実行に必要なのは、以下の2ファイルだけです(beta版じゃなくなったら、ファイル名は変わると思います)。
  • log4j-api-2.0-beta2.jar
  • log4j-core-2.0-beta2.jar
これで、MyApp.javaを実行すると、以下のように出力されます。
16:49:16.620 [main] ERROR test.log4j2.MyApp - error
デフォルトのログレベルは error なので、Logger#errorメソッドの内容しか出力されせん。#traceメソッドの内容も出力するには、Log4j2の設定ファイル log4j2.xml を用意する必要があります。log4j.xmlではなく、'log4j2.xml'ですので、ご注意ください。
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
  <appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </appenders>
  <loggers>
    <root level="trace"> <-- ログレベルをtraceに設定している -->
      <appender-ref ref="Console"/>
    </root>
  </loggers>
</configuration>
log4j2.xmlを置いたディレクトリには、クラスパスを通しておきましょう。 これで MyApp を実行すると、以下のようになります。
16:54:41.790 [main] TRACE test.log4j2.MyApp - Start MyApp.
16:54:41.791 [main] ERROR test.log4j2.MyApp - error
16:54:41.791 [main] TRACE test.log4j2.MyApp - Finish MyApp.
traceメソッドの内容も出力されました。

パッケージごとにログレベルを設定

上記の例だと、アプリケーション全体のログレベルがtraceになってしまい、たくさんのログが出力されてしまいます。パッケージごとにログレベルを設定するには、以下のようにします。
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
  <appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </appenders>
  <loggers>

    <!-- パッケージ test.log4j2 のログレベルを trace に設定 -->
    <logger name="test.log4j2" level="trace"/> 

    <!-- それ以外のログレベルは error に設定 -->
    <root level="error">
      <appender-ref ref="Console"/>
    </root>

  </loggers>
</configuration>
これで、パッケージtest.log4j2だけ、ログレベルがtraceになります。
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system