プロジェクト

全般

プロフィール

Log4j2

概要

log4j 2は、かつて存在した log4j (バージョン1系)の後継ライブラリとして再設計されたロギングライブラリで、Apacheプロジェクトの一つとして開発されています。
https://logging.apache.org/log4j/2.x/

Java SE標準のロギングAPIに比べて、高機能、高性能となっており、外部ライブラリの管理とのトレードオフで選択することがあります。

入手

公式サイトから[Download]を辿って、バイナリアーカイブを入手します。
バイナリアーカイブには多数のJARファイルが含まれていますが、基本機能は次の2つのJARファイルを使用します。

  • log4j-api
    log4j 2を利用するアプリケーションに提供するAPIを収めたライブラリ(JAR)ファイル
  • log4j-core
    APIの実装を収めたライブラリ(JAR)ファイル。この他に、利用する機能によってはさらに別なライブラリを必要とする

Asynchronouse Loggerを使う場合

Asynchronous Loggerを使う場合は、log4j 2とは別にLMAX Disrupterライブラリを必要とします。
https://lmax-exchange.github.io/disruptor/

使用方法

設定

設定ファイルまたはAPIでロギング設定を行います。
設定ファイルの形式には、JSON、YAML、プロパティ、XMLの4つの形式を使用可能です。

未設定時のデフォルト設定

  • コンソールに出力(ルートロガーにConsoleAppender)
  • ログ形式は"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"を指定したPatternLayoutをConsoleAppenderに設定
  • 出力レベルはERROR以上(ルートロガー)

設定ファイルの名前と配置

  1. システムプロパティlog4j.configurationFileで指定したパスを設定ファイルとして読み込む
  2. 上述が存在しない場合、クラスパス上にある規定の名前のファイルを以下順序で検索し、見付かった最初のファイルを読み込む
    • log4j2-test.properties
    • log4j2-test.yaml または log4j2-test.yml
    • log4j2-test.json または log4j2-test.jsn
    • log4j2-test.xml
  3. 上述が存在しない場合、クラスパス上にある規定の名前のファイルを以下順序で検索し、見付かった最初のファイルを読み込む
    • log4j2.properties
    • log4j2.yaml または log4j2.yml
    • log4j2.json または log4j2.jsn
    • log4j2.xml

Appenderの種類(抜粋)

  • ConsoleAppender
  • FileAppender
  • RollingFileAppender
  • AsyncAppender

パッケージ階層とクラス名に基づくロガーの使用

設定ファイルの書き方メモ

プロパティファイル形式

log4j 2.4から追加されたプロパティファイル形式の設定ファイル。
log4j 2.6からはアペンダー、フィルター、ロガーの識別子をカンマ区切りで列挙する必要なし。

キー名 指定例 内容
status status = warn log4jの内部ログの出力レベルを指定。通常(デフォルト)はoff
dest dest = err log4jの内部ログの出力先。out、err、ファイルパス、URLを指定可
name name = PropertiesConfig 設定名
  • ルートロガーは必ず設定する
    設定をしなかった場合は、ERRORレベルを出力し、ConsoleAppenderを接続したルートロガーが設けられる
  • ルートロガーは名前属性をもたない

クリップボードから画像を追加 (サイズの上限: 1 GB)