ホームページ  >  に質問  >  本文

log4j - java的日志到底是怎么一回事

黄舟黄舟2714日前494

全員に返信(3)返信します

  • 高洛峰

    高洛峰2017-04-17 16:57:57

    まず、設計パターン、つまりアダプター パターンを理解する必要があります。

    JDK に付属する Logger、Log4j、Logback など、Java がログを記録するために使用するライブラリは多数ありますが、通常、コードを記述するときにそれらのライブラリの 1 つを選択するだけです。

    しかし、ある日、自分が書いたコードがオープンソース化され、他の人が使用したい場合、どのロギング ライブラリを使用するべきかという疑問が生じます。もちろん、オープン ソース ライブラリを使用するユーザーがどのロギング フレームワークを使用しているかわからないため、1 つだけを選択することはできません。現時点では、他のユーザーが使用しているロギング フレームワークとの互換性を維持したい場合は、commons-logging または slf4j を使用する必要があります。したがって、一般にオープン ソース フレームワークは特定のログ フレームワークを使用しませんが、commons-logging または slf4j を使用してログを処理します。たとえば、Hibernate は slf4j を使用します。最新バージョンでは JBOSS アダプターが使用されているようです)、Spring では commons-logging が使用されています。

    Java は、ロギングの点で JDBC とは異なります。JDBC には、Oracle に接続するか MySQL に接続するかに関係なく、共通の標準 API セットがあります。ただし、ログ ライブラリ JDK Logger、Log4j、および Logback は相互に互換性がなく、共通のインターフェイスがありません。そのため、commons-logging と slf4j は アダプター モード を通じて共通のインターフェイスを抽象化し、それを使用します。ログを実装するには、特定のログ フレームワークにアクセスします。

    要約すると、JDK Logger、Log4j、および Logback は特定のログ フレームワークの実装であり、commons-logging と slf4j はログ フレームワーク間の非互換性を解決するための抽象アダプター インターフェイスです。

    最後に、このブログは私の slf4j のソース コード分析です。 http://blog.csdn.net/xiao__gui/article/details/32695647

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-17 16:57:57

    一部はインターフェースであり、一部は実装です。 slf4j は log4j のアップグレードされたバージョンで、両方とも commons-logging を実装しています。

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 16:57:57

    slf4j はログ ファサードであり、最下層で commons-logging、log4j、logback、およびその他の特定の実装を使用することを選択できます。

    返事
    0
  • キャンセル返事