ロギングフレームワークと原則はじめにはじめのSpringBootシリーズ

ロギングフレームワークと原則はじめにはじめのSpringBootシリーズ

1、一般的に使用されるロギングフレームワークの紹介

共通ロギングフレームワークの市場:7月、JCLは、JBoss-ロギング、logback、log4jの、log4j2、SLF4J、など

どのファサードをログに記録し、インタフェースAPI SLF4Jのシリーズ(簡易ログJava用ファサード)、JCL(Jakarta Commonsのロギング)は、JBoss-logginもあります

注:ちょうど共通ログSLF4Jのファサードのように、ログの抽象化層、不特定の実装を達成するためにログのlog4jフレーム等logbackを使用することによって達成されます

2、プロジェクトでSLF4Jの使用

呼び出しのロギング、またはSLF4Jジャーとその対応する実装フレームワークのlog4jまたはlogbackを導入することが提案され、その後、電話または構成ログのための良好なフレームワークと、次のように呼ぶこと、ログを追跡することができます

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

SLF公式ハンドブック:SLF4J公式マニュアルリンク

公式の伝説から、図SLF4Jに示すように、SLF4J使用シナリオの入門があります。

  • 示さ左のよう直接ガイドSLF4J APIプロジェクトは、ログを印刷することはできません
  • Logbackの使用、輸入SLF4J APIプロジェクトとその実装logback-classic.jar内、logback-core.jarに必要
  • log4jの同じインポートSLF4J APIプロジェクトを使用するだけでなく、より重要なアダプテーション層ジャーと相まって:SLF4J-log412.jar、その後、あるlog4j.jar SLF4Jを収めることができ
  • JTL(ロギングutilのJavaは)最初のアダプテーション層を適応させることによってSLF4J-jdk14.jarで、フレームは、APIの通常JTL SLF4Jを実現することができます

  • ここに画像を挿入説明

    3、SLF4Jにシステムログを統一

    [OK]を、私は疑問を持っている必要があり、ここで学びましたか?このようなスプリングフレームワークフレームワークは、Hibernate等のスプリング・プロジェクト、これらのフレームワークは、独自のロギングの実装を持っているかどうか、それが各フレームがそれ自体の基本的なロギングの実装を有することを示し、例えば、スプリングフレームワークは、ログ印刷用コモン・ログを使用することで(JBossの-伐採)のことであり、休止状態など、そのプロジェクトの枠組みの中で積み上げログのように山は、統合ログの印刷を達成することができますか?例えば、統一されたファサードSLF4Jを達成するために

SLF4J公式サイトでは:http://www.slf4j.org/legacy.html、このページは統一を達成するために、より合理的な互換性を提供してきた
伝説の公式サイトなどを、そのようなJCLフレームとしていくつかのブリッジジャーの導入の主なプロバイダは、JCLを導入することができます。 slf4j.jar - OVER
のlog4j導入することができるのlog4jオーバーSLF4J

公式声明:
SLF4JにJCLからの移行を容易にするためには、SLF4JのリリースはjarファイルのJCLオーバーslf4j.jarを含んでいます。jarファイルは、JCLを置き換えることを意図しています

問題への注意:
JCL-slf4j.jar、注意を払うと、このジャーニーズ、及びとともにJCLオーバーSLF4Jを使用していません

JCLオーバーslf4j.jarはSLF4J-jcl.jarと混同すべきではない
後方互換性の理由のために必要な場合に非常に有用JCL JCLオーバーSLF4J(すなわちJCLオーバーslf4j.jar)をサポートします。これは、JCLに関連する問題を解決するために使用することができ、代わりにSLF4J APIを使用しての、決定は後日に延期することができます。
一方、組み立て後に正式な要請JCLで大規模アプリケーション環境でコンポーネントを埋め込むにSLF4J-jcl.jar便利就業SLF4JのAPIです。あなたはまだ大規模なアプリケーションを壊すことなく、ソフトウェア・コンポーネントのSLF4J APIを使用することができます。実際には、SLF4J-jcl.jarすべてのログの決定はSLF4J APIのコンポーネントの依存性が大きい全体に透明であるように、JCLに委任されます。
JCLオーバーslf4j.jarとSLF4J-jcl.jarを展開しないことをしてくださいノート。JCLロギングシステムを委任しますjarファイルが無限ループで、その結果、jarファイルJCLのためのデリゲートの選択の意志SLF4Jログ記録システムの後、SLF4Jに選択する前に。

[OK]を、log4jのオーバーslf4j.jar使用のために同じノート

log4jのオーバーslf4j.jarとSLF4J-log4j12.jar両方ではない
すべての呼び出しSLF4Jのデリゲートのlog4jを強制するために存在するSLF4J-log4j12.jar(即ちのlog4j SLF4J結合)。すべてのlog4j API呼び出しのlog4jのオーバーslf4j.jar存在は、そのSLF4J同等に委任されます。両方が存在する場合、コールは無限ループを生じる、SLF4JにSLF4Jのlog4j、log4jのリダイレクトコールに委譲されます。

ここに画像を挿入説明
どのようにこれらのjarファイルが不正を犯していることが判明達成するために?このjarパッケージをして、力がないJCL API、達成SLF4J置換を達成するために、同様にJCLにちなんで命名されています。我々は、図示のように、対応するjarファイルを開くために指すことができます
ここに画像を挿入説明

ここに画像を挿入説明
ok,可以归纳统一项目使用slf4j的过程,首先系统还是用排除其它日志实现jar,然后引入桥接的jar,等覆盖了之后,就可以加上对应的实现jar包,实现日志打印

4、Springboot日志场景启动器

ok,有了前面的知识后,我们可以继续学习Springboot的日志实现了,从前面的知识可以知道,slf4j只是一个日志门面工程,并非实现,在很多项目里都有日志框架混用的情况,针对此种起来,可以加入一些桥接的偷梁换柱jar,然后再加上对应的实现jar就可以

然后Springboot其实也是类似这种实现,首先,Springboot默认使用slf4j作为门面工程,在实现过程也是有用这些偷梁换柱的桥接jar进行slf4j统一,然后再引用logback作为日志实现的jar,先快速创建一个Springboot项目:Springboot系列之快速创建项目教程

创建好项目之后,是默认会引入日志框架的,首先在pom文件,右键->maven->show dependencies显示jar依赖图

如图所示,Springboot的场景启动项目spring-boot-strater集成了spring-boot-strater-logging,spring-boot-strater-logging都是以logback为默认的日志实现框架,当然本博客是以Springboot2.2.1.RELEASE版本为例子的
ここに画像を挿入説明
当然每个版本的实现略有不同,不过基本都一致,给出尚硅谷老师给的图片:
ここに画像を挿入説明
ok,Springboot项目已经对日志做了一个比较好的兼容,还有一个日志jar冲突问题需要注意,因为Springboot项目是统一为slf4j门面的,很显然Springboot在项目实现中就已经做了其它日志jar门面的排除,比如spring项目就已经将jcljar排除了,如图:
ここに画像を挿入説明

したがって、このプロジェクトの使用、他のjarファイルの導入は、競合の瓶を避けるために、排除するために必要な操作を行うために、対応するログ実現ジャーがあるかどうかを検討すべきです

[OK]を、このブログは、一般的に使用されるロギングフレームワークへの導入が、これらは、必要な知識を持った後、あなたは、少し長く練習することができ、あるパラメータの詳細することができます私のブログ、SpringBootロギングフレームワークチュートリアルシリーズ

おすすめ

転載: www.cnblogs.com/mzq123/p/11874123.html