| Java 用のシンプルなロギング ファサード | |
|---|---|
| 開発者 | チェキ・ギュルチュ |
| 安定版リリース | |
| リポジトリ | |
| 書かれた | ジャワ |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | ログツール |
| ライセンス | 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 ]
重要な変更と機能の追加:
バージョン1
バージョンの詳細についてはマニュアルを参照してください。
重要なバージョンは次のとおりです:
- バージョン 1.7.36 以降のリリースは再現可能です。
- バージョン 1.7.35 slf4j-log4j12 モジュールは slf4j-reload4j に置き換えられました。
- バージョン1.7.33では、slf4j-reload4jモジュールを介してreload4jのサポートが追加されました。最新の安定版リリースです。製品ダウンロードページをご覧ください。
- バージョン 1.7.5 では、ロガーの取得時間が大幅に改善されました。
- バージョン 1.7.0 では、 Java 5以降のサポートを必要とするvarargsのサポートが追加されました。
- バージョン 1.6 では、バインディングが見つからない場合にデフォルトで使用される無操作実装が導入されました。
- Maven リポジトリのバージョン 1.1 のリリースは2006 年 9 月に開始されました。
参照
参考文献
- ^ 「SLF4Jニュース」 . slfj4.org . 2025年2月25日.
- ^ java.util.logging
- ^ログバック
- ^タイニーログ
- ^ 「tinylogのSLF4Jバインディング」 。 2017年12月7日時点のオリジナルよりアーカイブ。2014年12月16日閲覧。
- ^「commons-logging API を採用する前にもう一度考えてみましょう」
- ^「Jakarta Commons Logging 使用時に発生するクラスローダーの問題の分類」
- ^ 「GitHubプロジェクト3万件を分析 – Java、JS、Rubyのトップ100ライブラリ」 。 2014年7月9日時点のオリジナルよりアーカイブ。 2014年2月9日閲覧。
- ^ニコラス、フレンケル。「最も人気のある」セクション。Twitter 。2022年1月16日閲覧。
- ^ SLF4J API ドキュメント: ロガー
- ^ Apache log4j 2.x slf4j バインディング
- ^ 「SLF4Jニュース」 . www.slf4j.org . 2025年2月25日閲覧。