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
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 まで。