タグ付けされた質問 「slf4j」

Simple Logging Facade for Java(SLF4J)は、さまざまなロギングフレームワークの単純なファサードまたは抽象化レイヤーとして機能します。アプリケーションのロギングを構成する場合は、使用している実際のロギングフレームワークのタグも含めてください。

3
ロギングフレームワークの非互換性
私は小さなJavaアプリを構築していて、ロギングにlogbackを使用したいと思っています。 私のアプリは、ロギングを行う古いプロジェクトに依存しています org.apache.commons | com.springsource.org.apache.commons.logging | 1.1.1 ...だから私の計画は org.slf4j | jcl-over-slf4j | 1.5.6 ... JCLロギングをリダイレクトする org.slf4j | slf4j-api | 1.6.0 ...そして最終的に ch.qos.logback | logback-classic | 0.9.22 ch.qos.logback | logback-core | 0.9.22 したがって、私のアプリは、slf4j APIを介してlogbackを介してログを記録でき、一方、古いライブラリコードは、リダイレクトを介して同じ場所にログインできます。 悲しいかな、これは java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:141) これらのjarのいくつかで検証の数値を高くしたり低くしたり、APIドキュメントなどを調べてみましたが、問題を見つけて解決することができません。 助けてください? ログバックは「戦略的な」ロギングフレームワークと見なされていますが、最終的に使用するロギングメカニズムには多少の余裕があります。ただし、logbackまたはlog4jのいずれかを使用したいのですが、共通の構成を使用して、古いプロジェクトのロギングを「新しい」ロギングフレームワークが最終的に何になるかにマージしたいと思います。

17
slf4jでの実行時のメッセージのログレベルの設定
log4jを使用する場合、このLogger.log(Priority p, Object message)メソッドが使用可能であり、実行時に決定されたログレベルでメッセージを記録するために使用できます。この事実とこのヒントを使用していますを stderrを特定のログレベルのロガーにリダイレクトします。 slf4jにはlog()、私が見つけることができる一般的なメソッドがありません。それは、上記を実装する方法がないということですか?
100 java  logging  log4j  slf4j 

5
ロガーslf4jには、文字列連結ではなく{}を使用してフォーマットする利点
{}文字列連結の代わりに使用する利点はありますか? slf4jの例 logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT); の代わりに logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT); 構成ファイルによっては、実行時にパラメーターの評価(および文字列の連結)を回避できるため、速度の最適化が重要だと思います。ただし、使用できるパラメーターは2つだけであり、文字列の連結以外に選択肢がない場合があります。この問題についての意見が必要です。

1
SLF4Jを使用してプレースホルダーを使用して例外とメッセージをログに記録する方法
SLF4Jを使用してエラーメッセージと例外の両方をログに記録する正しいアプローチは何ですか? これを試してみましたが、例外スタックトレースが出力されません。 logger.error("Unable to parse data {}", inputMessage, e); この場合、例外スタックトレースをログアウトするだけでなく{}、データを入力する必要inputMessageがあります。 これを行うために私が見ることができる唯一の方法は、これを行うことです: logger.error("Unable to parse data " + inputMessage, e); これはきれいではありません。
85 java  logging  slf4j 

7
java.util.loggingをlog4jに送信する方法は?
log4jに対してすべてのロギングを行う既存のアプリケーションがあります。log4jを使用するか、Commons Loggingに対してログを記録する他の多くのライブラリを使用します。これにより、環境の内部でlog4jが使用されることになります。依存関係の1つは、slf4jに対してもログを記録します。これは、最終的にはlog4jにも委任されるため、正常に機能します。 ここで、キャッシュのニーズに応じて、このアプリケーションにehcacheを追加したいと思います。以前のバージョンのehcacheはcommons-loggingを使用していましたが、これはこのシナリオでは完全に機能していましたが、バージョン1.6-beta1では、commons-loggingへの依存関係が削除され、代わりにjava.util.loggingに置き換えられました。 java.util.loggingで利用できる組み込みのJDKロギングにあまり詳しくないので、JULに送信されたログメッセージをlog4jに対してログに記録する簡単な方法があるので、既存の構成を使用して、今後のロギング用にセットアップできます。 ehcacheから? JULのjavadocsを見ると、LogManager使用する実装を変更するために一連の環境変数を設定し、おそらくそれを使用してlog4jをLoggerJULLoggerクラスでラップできるようです。これは正しいアプローチですか? 皮肉なことに、ライブラリで組み込みのJDKロギングを使用すると、世界の他の地域(ほとんど)が代わりにサードパーティのライブラリを使用している場合に、このような頭痛の種が発生します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.