Javaのロガー (Logger) とは?log4j、java.util.logging、Logback、SLF4Jの比較

プログラミング
スポンサーリンク

Javaのロガー(Logger) は種類が沢山あって分かりにくいので、まとめてみた。

スポンサーリンク

Javaのロガー(Logger) の種類

Apache log4j

Apache log4jは、Javaのロギングユーティリティ。元々はCeki Gülcüにより開発されていたが、現在はApacheソフトウェア財団のプロジェクトの一つとなっている。

このライブラリをもとに他のライブラリが作られていきました。

 

こちらが公式サイトです。

https://logging.apache.org/log4j/2.x/

 

ログのレベルは以下の6段階です。

  • FATAL - 致命的なエラー
  • ERROR - エラー
  • WARN - 警告
  • INFO - 情報
  • DEBUG - デバッグ
  • TRACE - トレース

java.util.logging

java.util.logging は、Java標準のロギングライブラリです。

java.util.loggingはLog4jを参考に作られましたが、ところどころ使いづらかったため、標準だったにも関わらず、log4jに置き換わることはできませんでした。

そのため、Javaの世界には2つのロギングライブラリが残ってしまいました。

 

ログのレベルは以下の7段階です。

  • SEVERE - 重大なメッセージ
  • WARNING - 警告メッセージ
  • INFO - 情報メッセージ
  • CONFIG - 静的な構成メッセージ
  • FINE - 詳細なトレースメッセージ
  • FINER - かなり詳細なトレースメッセージ
  • FINEST - 非常に詳細なトレースメッセージ

Apache Commons Logging

Apache Commons Loggingは、ロギングのための抽象レイヤーでそれ自身は何もしません。

Apache Commons Logging は、 Log4j や java.util.logging など他のロガー実装に処理を委譲してくれるブリッジ ・ ライブラリです。

 

こちらが公式サイトです。

https://commons.apache.org/proper/commons-logging/

 

ログのレベルは以下の6段階です。

  • FATAL - 致命的なエラー
  • ERROR - エラー
  • WARN - 警告
  • INFO - 情報
  • DEBUG - デバッグ
  • TRACE - トレース

LogbackとSLF4J

log4jを作ったCeki Gülcüが、log4j互換の後継として作ったものが、LogbackとSLF4Jです。

よって、LogbackとSLF4Jが最も優れたロギングライブラリと考えてよいでしょう。

 

こちらがLogbackの公式サイトです。

http://logback.qos.ch/

 

 

SLF4Jとは、Simple Logging Facade for Javaのことです。

シンプルなファサードパターンによってJavaロギングAPIを提供します。

SLF4Jはファサードなので、log4j、java.util.logging、Logbackにログ出力を移譲します。

Apache Common Loggingと同じ立ち位置ですね。

 

こちらがSLF4Jの公式サイトです。

http://www.slf4j.org/

 

コメント