log4jとは? わかりやすく解説

log4j

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/01/25 16:31 UTC 版)

ナビゲーションに移動 検索に移動
Apache log4j
開発元 Apacheソフトウェア財団
最新版
2.11.0[1] / 2018年3月11日(2年前) (2018-03-11
リポジトリ
プラットフォーム クロスプラットフォーム
種別 ロギングツール
ライセンス Apache 2.0 ライセンス
公式サイト logging.apache.org/log4j
テンプレートを表示

Apache log4jは、Javaロギングユーティリティ。元々はCeki Gülcüにより開発されていたが、現在はApacheソフトウェア財団のプロジェクトの一つとなっている。主にデバッグ用ツールとして使用されている[要出典]。log4jは、Java logging framework英語版の一つである。

Ceki Gülcüはその後、log4j互換の後継として、SLF4J英語版Logbackの開発プロジェクトを立ち上げている。

機能

ログレベル

log4jは、6つのログレベルを標準提供する。この他に利用者が任意のログレベルを追加することも可能である。ログレベルが高い(情報量が少ない)ものから低い(情報量が多い)ものへと順に並べると下表の通り。

FATAL 致命的なエラー。プログラムの異常終了を伴うようなもの。コンソール等に即時出力することを想定
ERROR エラー。予期しないその他の実行時エラー。コンソール等に即時出力することを想定
WARN 警告。廃要素となったAPIの使用、APIの不適切な使用、エラーに近い事象など、実行時に生じた異常とは言い切れないが正常とも異なる何らかの予期しない問題。コンソール等に即時出力することを想定
INFO 情報。実行時の何らかの注目すべき事象(開始や終了など)。コンソール等に即時出力することを想定。従ってメッセージ内容は簡潔に止めるべき
DEBUG デバッグ用の情報。システムの動作状況に関する詳細な情報。コンソールではなくログ上にだけ出力することを想定
TRACE トレース情報。更に詳細な情報。コンソールではなくログ上にだけ出力することを想定

設定ファイル

log4jは、二つの方法で設定が可能である。一つはプロパティファイル、もう一つはXMLファイルである。両者とも、3つの主要なコンポーネント(ロガー、アペンダ、レイアウト)について定義することができる。ファイルにより設定を行うため、log4jを使用しているアプリケーションを変更することなく、ロギングをon/offできるという利点がある。たとえば、問題が発生するまではロギングをoffで動作させておき、設定ファイルを変更することで簡単にロギングを再開する、という使い方ができる。

ロガー (Loggers) は論理的なログファイル名であり、Javaアプリケーションはこれらの名前を意識する。個々のロガーにて取得するログのレベル(FATAL、ERROR等々)はロガー毎に独立に設定できる。古いバージョンのlog4jでは、これらは「カテゴリ」と「優先度」と呼ばれていたが、現バージョンではそれぞれ「ロガー」と「レベル」と呼んでいる。

アペンダ (Appenders) は具体的な出力処理を行う。アペンダには様々な種類があり、それぞれ内容を表す名前が付いている。例えばFileAppender、ConsoleAppender、SocketAppender、SyslogAppender、NTEventLogAppenderなどがあり、SMTPAppenderというものさえある。任意のロガーには複数のアペンダを付与できるので、同じログ情報を例えばローカルのファイルと他のコンピュータ上のソケット英語版リスナに同時に出力する、などという使い方が可能。

レイアウト (Layouts) は一件ずつのログを整形するためにアペンダによって参照される。例えば行単位に出力するログを整形する方法としてPatternLayoutというものがあり、これはC言語printf関数によく似た書式指定子を使える。他にもHTMLLayoutやXMLLayoutなどがあり、これらはそれぞれHTMLやXMLの書式に整形したい場合に使える。

設定例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC
"http://logging.apache.org/log4j/docs/api/org/apache/log4j/xml/log4j.dtd">
<log4j:configuration>
    <!-- アペンダとは出力先のことであり、例えばコンソールやファイルを指す。
    アペンダの名前は好きに決めてよい。-->
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" />
        </layout>
    </appender>
 
    <!-- 'org.springframework'カテゴリのロガーは、infoレベル以上のメッセージのみロギングする。
    もしロガーをクラス名で検索し(例:Logger.getLogger(AClass.class))AClassが
    springframework.orgパッケージに属するなら、そのロガーはこのカテゴリに属する。-->
    <logger name="org.springframework">
        <level value="info"/>
    </logger>

    <!-- springは原則としてinfo以上のログしか取らないが、PropertyEditorRegistrySupportクラスについては
    デバッグログも欲しい-->
    <logger name="org.springframework.beans.PropertyEditorRegistrySupport">
        <level value="debug"/>
    </logger>
 
    <logger name="org.acegisecurity">
        <level value="info"/>
    </logger>
 
    <root><!-- rootカテゴリ -->
        <!-- 別途定義が無い限り、デバッグレベル以上の全てのメッセージをロギングする。-->
        <!-- 別途定義が無い限り、全てのログは「stdout」アペンダにてロギングされる。 -->
        <level value="debug" />
        <appender-ref ref="stdout" />
    </root>
</log4j:configuration>

(訳注:この設定例中に出現する「カテゴリ」という用語と、「ロガー」の旧称としての「カテゴリ」との関係は不詳。)

ログビューア

ApacheにはChainsaw英語版という別プロジェクトが存在しており、これはlog4jにて生成されたログファイルを利用する。ChainsawはJavaベースのGUIビューアであり、豊富な機能を持つ。Chainsawもlog4jに類似した設定ファイルを使用する。log4j向けのビューアは他にもあるが(例:log2webオープンソースかつウェブベース)、Chainsawに比較して機能が少ない。

脚注

[脚注の使い方]
  1. ^ Log4j - Changes - Apache Log4j 2

外部リンク

ポート


Log4j

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/22 03:12 UTC 版)

ナビゲーションに移動 検索に移動
Apache Log4j
開発元 Apacheソフトウェア財団
最新版
2.17.0[1]  / 18 12月 2021年 (18 12月 2021)[2]
リポジトリ
プラットフォーム クロスプラットフォーム
種別 ロギングツール
ライセンス Apache 2.0 ライセンス
公式サイト logging.apache.org/log4j
テンプレートを表示

Apache Log4jは、Javaベースのロギングユーティリティである。Ceki Gülcüによって書かれたもので、Apache Software FoundationのApache Logging Servicesプロジェクトの一部である。Log4jはいくつかのJavaロギングフレームワークの一つである。

Gülcüはその後、Log4jの後継製品を提供する意図で、SLF4J英語版Logback[3]プロジェクトを開始した。

Apache Log4jチームは、Log4j 1の後継となるバージョン2を作成した[4]。Log4j 2は、Log4j 1.2、1.3、java.util.logging、Logbackの問題点に焦点を当てて開発され、これらのフレームワークに現れた問題に対処している[5]。 さらに、Log4j 2はプラグイン・アーキテクチャを提供し、前バージョンよりも拡張性が高くなっている。Log4j 2は、1.xバージョンとの後方互換性はない[6]が、「アダプター」が利用できる。

2015年8月5日、Apache Logging Services Project Management Committeeは、Log4j 1が寿命に達したため、Log4j 1のユーザーはApache Log4j 2へのアップグレードを推奨すると発表した[7]

機能

ログレベル

Log4jは、6つのログレベルを標準提供する。この他に利用者が任意のログレベルを追加することも可能である。ログレベルが高い(情報量が少ない)ものから低い(情報量が多い)ものへと順に並べると下表の通り。

FATAL 致命的なエラー。プログラムの異常終了を伴うようなもの。コンソール等に即時出力することを想定
ERROR エラー。予期しないその他の実行時エラー。コンソール等に即時出力することを想定
WARN 警告。廃要素となったAPIの使用、APIの不適切な使用、エラーに近い事象など、実行時に生じた異常とは言い切れないが正常とも異なる何らかの予期しない問題。コンソール等に即時出力することを想定
INFO 情報。実行時の何らかの注目すべき事象(開始や終了など)。コンソール等に即時出力することを想定。従ってメッセージ内容は簡潔に止めるべき
DEBUG デバッグ用の情報。システムの動作状況に関する詳細な情報。コンソールではなくログ上にだけ出力することを想定
TRACE トレース情報。更に詳細な情報。コンソールではなくログ上にだけ出力することを想定

設定ファイル

Log4jは、二つの方法で設定が可能である。一つはプロパティファイル、もう一つはXMLファイルである。両者とも、3つの主要なコンポーネント(ロガー、アペンダ、レイアウト)について定義することができる。ファイルにより設定を行うため、Log4jを使用しているアプリケーションを変更することなく、ロギングをon/offできるという利点がある。たとえば、問題が発生するまではロギングをoffで動作させておき、設定ファイルを変更することで簡単にロギングを再開する、という使い方ができる。

ロガー (Loggers) は論理的なログファイル名であり、Javaアプリケーションはこれらの名前を意識する。個々のロガーにて取得するログのレベル(FATAL、ERROR等々)はロガー毎に独立に設定できる。古いバージョンのLog4jでは、これらは「カテゴリ」と「優先度」と呼ばれていたが、現バージョンではそれぞれ「ロガー」と「レベル」と呼んでいる。

アペンダ (Appenders) は具体的な出力処理を行う。アペンダには様々な種類があり、それぞれ内容を表す名前が付いている。例えばFileAppender、ConsoleAppender、SocketAppender、SyslogAppender、NTEventLogAppenderなどがあり、SMTPAppenderというものさえある。任意のロガーには複数のアペンダを付与できるので、同じログ情報を例えばローカルのファイルと他のコンピュータ上のソケット英語版リスナに同時に出力する、などという使い方が可能。

レイアウト (Layouts) は一件ずつのログを整形するためにアペンダによって参照される。例えば行単位に出力するログを整形する方法としてPatternLayoutというものがあり、これはC言語printf関数によく似た書式指定子を使える。他にもHTMLLayoutやXMLLayoutなどがあり、これらはそれぞれHTMLやXMLの書式に整形したい場合に使える。

設定例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC
"http://logging.apache.org/log4j/docs/api/org/apache/log4j/xml/log4j.dtd">
<log4j:configuration>
    <!-- アペンダとは出力先のことであり、例えばコンソールやファイルを指す。
    アペンダの名前は好きに決めてよい。-->
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" />
        </layout>
    </appender>
 
    <!-- 'org.springframework'カテゴリのロガーは、infoレベル以上のメッセージのみロギングする。
    もしロガーをクラス名で検索し(例:Logger.getLogger(AClass.class))AClassが
    springframework.orgパッケージに属するなら、そのロガーはこのカテゴリに属する。-->
    <logger name="org.springframework">
        <level value="info"/>
    </logger>

    <!-- springは原則としてinfo以上のログしか取らないが、PropertyEditorRegistrySupportクラスについては
    デバッグログも欲しい-->
    <logger name="org.springframework.beans.PropertyEditorRegistrySupport">
        <level value="debug"/>
    </logger>
 
    <logger name="org.acegisecurity">
        <level value="info"/>
    </logger>
 
    <root><!-- rootカテゴリ -->
        <!-- 別途定義が無い限り、デバッグレベル以上の全てのメッセージをロギングする。-->
        <!-- 別途定義が無い限り、全てのログは「stdout」アペンダにてロギングされる。 -->
        <level value="debug" />
        <appender-ref ref="stdout" />
    </root>
</log4j:configuration>

(訳注:この設定例中に出現する「カテゴリ」という用語と、「ロガー」の旧称としての「カテゴリ」との関係は不詳。)

ログビューア

ApacheにはChainsaw英語版という別プロジェクトが存在しており、これはLog4jにて生成されたログファイルを利用する。ChainsawはJavaベースのGUIビューアであり、豊富な機能を持つ。ChainsawもLog4jに類似した設定ファイルを使用する。Log4j向けのビューアは他にもあるが(例:log2webオープンソースかつウェブベース)、Chainsawに比較して機能が少ない。

Log4Shell

2021年12月9日、Log4j 2のリモートコード実行ゼロデイ脆弱性Log4Shell(CVE-2021-44228)が表面化した[8]。影響を受けるサービスには、iCloudMinecraftSteamなどがある[9][10]。この脆弱性の原因となる機能は、その数日前に正式にリリースされたバージョン2.15.0ではデフォルトで無効化されている[11]。Apache Software Foundationは、CVSSの深刻度評価を最高点の10に指定した[12]。12月14日時点では脆弱性を利用した攻撃が観測されている[8]

脚注

[脚注の使い方]
  1. ^ https://github.com/apache/logging-log4j2/releases/tag/rel%2F2.17.0; 閲覧日: 19 12月 2021; 言語: 英語; 出版日: 18 12月 2021.
  2. ^ Log4j – Changes - Apache Log4j 2”. apache.org. Apache Software Foundation. 2021年12月18日閲覧。
  3. ^ Logback Home”. Logback.qos.ch. 2014年7月24日閲覧。
  4. ^ Logback Home”. Logback.qos.ch. 2014年7月24日閲覧。
  5. ^ Goers, Ralph (2019年12月15日). “Why was Log4j 2 created?” (英語). Ralph Goers. 2021年12月11日閲覧。
  6. ^ Log4j 2 Guide - Apache Log4j 2: News”. Logging.apache.org (2014年7月12日). 2014年7月24日閲覧。
  7. ^ Apache™ Logging Services™ Project Announces Log4j™ 1 End-Of-Life; Recommends Upgrade to Log4j 2”. blogs.apache.org (2015年8月5日). 2016年7月3日閲覧。
  8. ^ a b 日本放送協会. ““ログソフト”に深刻なぜい弱性 IPA 早急な対策呼びかけ”. NHKニュース. 2021年12月14日閲覧。
  9. ^ Goodin (2021年12月9日). “Zeroday in ubiquitous Log4j tool poses a grave threat to the Internet”. Ars Technica. 2021年12月10日閲覧。
  10. ^ Worst Apache Log4j RCE Zero day Dropped on Internet”. Cyber Kendra (2021年12月9日). 2021年12月10日閲覧。
  11. ^ Apache Log4j Security Vulnerabilities”. 2021年12月10日閲覧。
  12. ^ Mott, Nathaniel (2021年12月10日). “Countless Servers Are Vulnerable to Apache Log4j Zero-Day Exploit”. PC Magazine. 2021年12月10日閲覧。

外部リンク

ポート





固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  
  •  log4jのページへのリンク

辞書ショートカット

すべての辞書の索引

「log4j」の関連用語

log4jのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



log4jのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのlog4j (改訂履歴)、Log4j (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS