目次
5. SLF4j およびその他のロギング フレームワークについて
1. ログを使用する理由
常に「System.out.println()」などの出力ステートメントを使用して特定の情報を出力する場合、開発プロセス中は問題ないかもしれませんが、プロジェクトの開発が完了すると、この情報は表示されなくなります。ソース コードとソース コードに注釈を付ける作業には多大な作業負荷が必要であり、その後に必要となる可能性のある機能の更新やメンテナンスには役立ちません。
ログを利用することで、レベルに応じて出力したり、運用環境(開発環境、納品後の本番環境)に応じて表示レベルを設定したりすることができ、開発中のみ特定の情報を出力して参照できるようにすることができます。配信後は実稼働環境では表示されません。
2. ログの基本的な使い方
Spring Boot プロジェクトでは、Lombok の依存関係が追加されると、@Slf4j アノテーションを任意のクラスに追加でき、クラス内で log という名前の変数を使用して、ログを出力するメソッドを呼び出すことができます (この変数はコンパイル時に Lombok によって追加されます)。 )。
2.1 ログを出力するメソッドを呼び出す場合、推奨される方法は次のとおりです。
public void info(String format, Object... arguments);
つまり、最初のパラメータは出力される内容を示す文字列ですが、この文字列の各変数値はプレースホルダとして {} を使用し、2 番目のパラメータはObject型の変数パラメータです。最初のパラメーターの文字列値のプレースホルダーに対応する値は、2 番目のパラメーターによって順番に表されます。
2.2 使用例:
int m = 2022;
int n= 1225;
String a="This is a sample"
log.info("{}:m的值为{}, n的值为{}, m+n的值为{}", a , m, n, m+n);
3. ログレベル
3.1 表示レベル
SLF4j では、情報の重要度の低から高までのログの表示可能なレベルは次のとおりです。
- トレース: トレース情報
- デバッグ: デバッグ
- 情報: 一般的な情報
- 警告: 警告
- エラー: エラー
log 変数を使用してログを出力する場合、上記 5 つのレベルには対応するメソッドがあり、メソッド名はこれら 5 つのレベルの名前であり、これら 5 つのレベルのメソッドのオーバーロードは同じです。
呼び出されるメソッドに応じて、出力されるログのレベルは異なります。たとえば、info() 系列のメソッド (複数のオーバーロードされたメソッド) を呼び出す場合、出力されるログは info レベルになります。
debug() 一連のメソッドが呼び出されると、出力ログは debug() レベルになります。
3.2 ログの表示レベルを設定する
Spring Boot プロジェクトの application.properties で、次の構文を使用してログの表示レベルを設定します。
logging.level.パッケージ名.クラス名 = ログ表示レベル
例
logging.level.com.example.demo.demo=debug
上記の設定により、指定したクラスのログを指定した表示レベルに設定できます。
次のように構成することもできます。
logging.level.パッケージ名=ログ表示レベル
例
logging.level.com.example.demo=debug
上記の構成では、指定したパッケージとその子孫内のすべてのクラスのログを、指定した表示レベルに設定できます。
表示レベルを設定すると、設定したレベル以降の重要なレベルのログが表示されます。たとえば、デバッグに設定すると、デバッグ、情報、警告、エラーが表示されます。警告に設定すると、警告とエラーのみが表示されます。ログのレベル。
4. ログの利点
ログの主な利点は次のとおりです。
-ログの表示レベルを制御するように設定可能
- ログのテキストがキャッシュされ、複数回実行すると出力効率が高くなります
- 高度な使い方では、ファイルやデータベースなど、他の指定した場所にログを出力することもできます。
5. SLF4j およびその他のロギング フレームワークについて
log4j や logback などのロギング フレームワークは比較的主流のロギング フレームワークであり、`SLF4j` は標準のセットであり、特定のログ機能を持たないため、SLF4j と log4j / logback はインターフェイスおよび実装クラスに似ています。 (自然はそうではありません)。