SLF4J

Java 用のシンプルなロギング ファサード
開発者チェキ・ギュルチュ
安定版リリース
2.0.17 / 2025年2月25日[ 1 ] (2025年2月25日
リポジトリ
書かれたジャワ
オペレーティング·システムクロスプラットフォーム
タイプログツール
ライセンスMITライセンス
Webサイトwww.slf4j.org

Simple Logging Facade for Java ( SLF4J ) は、シンプルなファサードパターンを用いたJavaロギングAPIを提供します。基盤となるロギングバックエンドは、実行時にクラスパスに適切なバインディングを追加することで決定され、標準のSun Javaロギングパッケージ java.util.logging [ 2 ] 、 Log4j、Reload4j、Logback [ 3 ] 、またはtinylog [ 4 ] [ 5 ]のいずれかとなります。

クライアントAPIをログバックエンドから分離することで、アプリケーションと特定のログフレームワーク間の結合度が低減されます。これにより、既存またはサードパーティのコードとの統合が容易になり、また、既にログバックエンドを選択している他のプロジェクトへのコード提供も容易になります。

SLF4Jは、Ceki Gülcüによって、Jakarta Commons Loggingフレームワークのより信頼性の高い代替として作成されました。[ 6 ] [ 7 ] 2013年に10,000のGitHubプロジェクトを対象に行われた調査では、最も人気のあるJavaライブラリはSLF4Jであり、JUnitと並んで30.7%のプロジェクトで使用されていることがわかりました。[ 8 ] 2021年1月、mvnrepositoryによると、SLF4Jは2番目に人気のあるプロジェクトにランクされました。[ 9 ]

log4j 1.xとの類似点と相違点

  • log4j の 6 つのログレベルのうち 5 つ (ERROR、WARN、INFO、DEBUG、TRACE) が使用されます。FATAL は、ロギングフレームワーク内でアプリケーションの終了時期を決定するものではないため、ロガーの観点からは ERROR と FATAL に違いがないという理由で削除されました。さらに、SLF4J マーカーは、ログステートメントにタグを付けるより一般的な方法を提供します。例えば、ERROR レベルのログステートメントはすべて「FATAL」マーカーでタグ付けできます。
  • ロガーインスタンスは を介し​​て作成されます。LoggerFactoryこれはlog4jと非常によく似ています。例えば、
    プライベート静的最終Logger LOG = LoggerFactory . getLogger ( Wombat . class );
  • Loggerでは、ログ出力メソッドは1つ、2つ、あるいはそれ以上の値を受け入れる形式でオーバーロードされています。 [ 10 ]ログメッセージ内の単純なパターンの出現箇所は、{}順番に値に置き換えられます。これは使い方が簡単で、値に高価なtoString()メソッドがある場合にパフォーマンス上の利点をもたらします。指定されたレベルでログ出力が無効になっている場合、ログ出力フレームワークは値の文字列表現を評価したり、実際にはログに記録されないログメッセージ文字列を構築したりする必要がなくなります。次の例では、 DEBUGが有効な場合にのみ、toString()countまたは文字列の連結とメソッドuserAccountListが実行されます。
LOG . debug ( "現在、 " + count + " 個のユーザーアカウントがあります: " + userAccountList ); // 遅いLOG . debug ( "現在、 {} 個のユーザーアカウントがあります: {} " , count , userAccountList ); // 速い
  • Loggerなどにも同様のメソッドが存在し、isDebugEnabled()より複雑なログ記録呼び出しをラップして、対応するレベルが無効になっているときに無効にし、不要な処理を回避できるようにします。
  • log4jとは異なり、SLF4J はマーカーを受け入れるログメソッドを提供しています。マーカーはログメッセージを充実させる特別なオブジェクトです。現時点では、マーカーを利用できるフレームワークはlogbackのみです。

log4j 2.xとの類似点と相違点

Apache log4j 2.xはすべてのslf4j機能をサポートしています。[ 11 ]

バージョン履歴

バージョン2

バージョン2.0.0は2022年8月20日にリリースされました。最新バージョン2は2.0.17(2025年2月25日)です。[ 12 ]

重要な変更と機能の追加:

  • ログに記録するメッセージを渡す際のラムダ構文のサポート。
  • Fluent APIの追加。
  • Java 8以降が必要です。
  • メカニズムを使用してServiceLoader、ログ記録バックエンドを検索します。

バージョン1

バージョンの詳細についてはマニュアルを参照してください。

重要なバージョンは次のとおりです:

参照

参考文献