2

私はこのサードパーティのライブラリを持っています:

  • slf4j-api-1.5.5.jar
  • slf4j-jdk14-1.5.5.jar
  • jcl-over-slf4j-1.5.5.jar

このライブラリに対していくつかのテストを作成し、そのログ出力を確認したいのですが、これ以上ログライブラリを追加したくありません(log4jなどは追加しません)。

SLF4JとCommonLoggingはどちらもロギングの抽象化であることを理解しているので、おそらく独自の単純な具象ロガーを作成する必要があります(jcl-over-slf4jにはorg.apache.commons.logging.impl.SimpleLogが含まれているため、そうではないかもしれません)。その場合、どのインターフェイスを実装する必要がありますか。さらに重要なことに、テストでロガーを使用するようにSL4J / Common Loggingを設定するにはどうすればよいですか?StaticLoggerBinderクラスを変更する必要があることをSLF4Jのドキュメントで読みました...これは、実際にSLF4Jソースをダウンロードし、クラスを変更して再コンパイルする必要があることを意味しますか?

4

3 に答える 3

9

SLF4Jを使用しています。これは非常に便利ですが、いくつかのjarには紛らわしい名前が付いており、互換性のないものを最初から理解するのは明確ではありません。

SLF4Jは、コードへのログインに使用するAPIです(たとえばlog.info("blah")、SLF4Jには構成の側面がありません。実行時に、APIを「実際の」ロギングサブシステムにバインドするjarをクラスパスに1つだけ追加します。 Log4Jを使用するか、 SimpleまたはJDKslf4j-log4j.jarの場合はStaticBinder jarを追加するか、Logbackを使用します。これらのロギング実装は、SLF4Jを使用しない場合と同じように構成します。

Log4J、Apache Commons Logging、およびjava.util.loggingのAPIを使用して記述された既存のロギングステートメントをSLF4Jにリダイレクトするために使用できるSLF4Jモジュールがいくつかあります。これにより、これらすべての分散実装に対して単一のロギング構成をセットアップできます。(これは、レガシーロギングフレームワークに直接バインドするライブラリがある場合、たとえばLog4JとJULの両方を構成しないようにするために非常に役立ちます。)

SLF4Jのレガシーページでは、これらの概念について詳しく説明しています。ちなみに、Sysout.out/errをSFL4Jにリダイレクトするモジュールもあります。

あなたの質問にもっと直接的に答えるには:SLF4Jの下に行くためにあなた自身のロギング実装を書くことができることを確認してください。しかし、そうする唯一の理由は、あなたがすでにいくつかの自家製のくだらないロギングフレームワークに閉じ込められているからです。

于 2011-02-06T07:18:22.870 に答える
1

シンプルにしたい場合は、組み込みの(jdk 1.4以降の)ロガーを使用してください

http://download.oracle.com/javase/1.4.2/docs/api/java/util/logging/Logger.html

jdkバインディングjarにはslf4jが付属しています。jarがwebappWEB-INF/ libディレクトリにデプロイされていること、またはそれ以外の場合はクラスパスにデプロイされていることを確認する必要があります。詳細については、(slf4j.org/faq.html#where_is_binding)およびこれ(slf4j.org/faq.html)を参照してください。

クラスパスに追加するjarはslf4j-jdk14.jarです。jdkロガーはすでに使用可能であることに注意してください。このjarは、slf4jインターフェースと選択したロガー実装の間のリンクです。jdkロギングバインディングjarにはslf4jディストリビューションが付属しています。これはあなたのためにそれをするはずです。

于 2011-02-06T06:07:08.320 に答える
-3

あなたの質問は、あなたがSLF4Jユーザーマニュアルを読んでいないと私に信じさせました。非常に短いドキュメントです。ドキュメントを読んだ後も同じ質問がある場合は、ドキュメントの目的が果たせないため、明確にする必要があります。

とにかく、独自のLoggerクラスを実装する必要はありません。slf4j-simpleSLF4Jに同梱されているものを使用してください。

于 2011-02-06T10:43:09.660 に答える