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

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

30
SLF4J:クラス「org.slf4j.impl.StaticLoggerBinder」の読み込みに失敗しました
私のアプリケーションは、tcServerとWebSphere 6.1の両方にデプロイされます。このアプリケーションはehCacheを使用するため、依存関係としてslf4jが必要です。その結果、slf4j-api.jar(1.6)jarをwarファイルバンドルに追加しました。 次のエラーを除いて、アプリケーションはtcServerで正常に動作します。 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. ただし、WebSphereにデプロイすると、java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder。 も伴う Failed to load class "org.slf4j.impl.StaticMDCBinder" 両方のアプリケーションサーバーのクラスパスを確認しましたが、他のslf4j jarはありません。 誰かがここで何が起こっているのか考えていますか?
619 java  websphere  slf4j 

5
java.util.loggingを使用しないのはなぜですか?
私は人生で初めて、オープンソースになるJava APIを書いている立場にいます。うまくいけば、他の多くのプロジェクトに含まれることになります。 ロギングのために、私(そして実際に私が作業している人々)は常にJUL(java.util.logging)を使用しており、JULで問題が発生することはありません。しかし今、私は自分のAPI開発のために何をすべきかをより詳細に理解する必要があります。私はこれについていくつかの調査を行いましたが、得た情報を使用して、さらに混乱します。したがって、この投稿。 私はJUL出身なので、それに偏っています。残りについての私の知識はそれほど大きくありません。 私が行った調査から、人々がJULを嫌うこれらの理由を思いつきました。 「私は日が7月にリリースし、長い前に、Javaで開発を開始し、私がロギングフレームワーク-Xを続けることではなく、何か新しいことを学ぶことのためだけに簡単でした」。うーん。私は冗談ではありません、これは実際に人々が言うことです。この議論があれば、全員がCOBOLを実行できます。(私は確かにこれが怠惰な男であることと自分自身を関連付けることができます) 「JULのログレベルの名前は好きではありません。」真剣に、これは新しい依存関係を導入する理由には不十分です。 「JULからの出力の標準形式が気に入らない」。うーん。これは単なる設定です。コード的に何もする必要はありません。(確かに、昔は、正しいものにするために独自のFormatterクラスを作成する必要があったかもしれません)。 「logging-framework-Xも使用する他のライブラリを使用しているので、それを使用する方が簡単だと思いました」。これは循環論ですよね?「みんな」がJULではなくlogging-framework-Xを使用するのはなぜですか? 「他の誰もがlogging-framework-Xを使用しています」。これは、上記の特別なケースです。大多数が常に正しいとは限りません。 だから本当の大きな問題はなぜJULではないのですか?。私が見逃したものは何ですか?ロギングファサード(SLF4J、JCL)の存在理由は、複数のロギング実装が歴史的に存在しており、その理由は、私が見る限り、JULの前の時代に本当に戻っているためです。JULが完璧だったとしたら、ファサードのロギングは存在しなかったでしょうか。問題をさらに混乱させるのは、JUL自体がある程度ファサードであり、ハンドラー、フォーマッター、さらにはLogManagerさえもスワップできるようにすることです。 同じこと(ロギング)を行う複数の方法を採用するのではなく、そもそもなぜそれらが必要だったのか疑問に思わないでしょうか。(そして、それらの理由がまだ存在するかどうかを確認してください) わかりました、これまでのところ私の研究により、JULの実際の問題であると思われるいくつかのことがわかりました。 パフォーマンス。SLF4Jのパフォーマンスは他より優れていると言う人もいます。これは時期尚早の最適化の場合のようです。1秒あたり数百メガバイトをログに記録する必要がある場合、とにかく正しいパスにいるとは思えません。JULも進化しており、Java 1.4で行ったテストは真実ではなくなっている可能性があります。あなたはそれについてここで読むことができ、この修正はそれをJava 7に取り入れました。多くの人はロギングメソッドでの文字列連結のオーバーヘッドについても話します。ただし、テンプレートベースのロギングはこのコストを回避し、JULにも存在します。個人的には、テンプレートベースのロギングを実際に書くことはありません。そのために怠惰です。たとえば、JULでこれを行う場合: log.finest("Lookup request from username=" + username + ", valueX=" + valueX + ", valueY=" + valueY)); 私のIDEは私に警告し、それを次のように変更するように許可を求めます。 log.log(Level.FINEST, "Lookup request from username={0}, valueX={1}, valueY={2}", new Object[]{username, valueX, valueY}); ..もちろんそれを受け入れます。許可が与えられました!ご協力ありがとうございました。 そのため、私は実際にそのようなステートメントを自分で書くことはありません。それはIDEによって行われます。 パフォーマンスの問題について結論すると、JULのパフォーマンスが競合他社に比べて良くないことを示唆するものは何も見つかりませんでした。 クラスパスからの設定。デフォルトのJULは、クラスパスから構成ファイルをロードできません。数行のコード、それはそうするために。これが煩わしい理由はわかりますが、解決策は短くて簡単です。 出力ハンドラーの可用性。JULには、コンソール、ファイルストリーム、ソケット、メモリの5つの出力ハンドラーが付属しています。これらは拡張することも、新しいものを書くこともできます。これは、たとえば、UNIX / …
351 java  logging  slf4j  logback 

2
slf4j:フォーマットされたメッセージ、オブジェクト配列、例外をログに記録する方法
設定されたメッセージと例外のスタックトレースの両方をログに記録する正しい方法は何ですか? logger.error( "\ncontext info one two three: {} {} {}\n", new Object[] {"1", "2", "3"}, new Exception("something went wrong")); 次のような出力を生成したいと思います。 context info one two three: 1 2 3 java.lang.Exception: something went wrong stacktrace 0 stacktrace 1 stacktrace ... slf4jバージョン1.6.1
275 java  exception  logging  slf4j 

14
SLF4J:クラスパスに複数のSLF4Jバインディングが含まれています
次のエラーが発生します。sl4jにバインドされた複数のロギングフレームワークがあるようです。これを解決する方法がわかりません。どんな助けでも大歓迎です。 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.4/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
206 maven-2  slf4j 

4
プログラムによるLog4jロガーの構成
SLF4J(log4jバインディング付き)を初めて使用しようとしています。 さまざまなレベルをログに記録し、メッセージをさまざまなアペンダーにプッシュするLoggerFactoryによって返される3つの異なる名前付きロガーを構成したいと思います。 ロガー1 "FileLogger"はデバッグをログに記録し、 DailyRollingFileAppender ロガー2 "TracingLogger"はTRACE +をログに記録し、 JmsAppender ロガー3「ErrorLogger」はERROR +をログに記録し、別の JmsAppender さらに、それらをプログラムで構成したい(XMLまたはlog4j.propertiesファイルではなく、Javaで)。 通常、メソッドのLoggerように、これらのsをブートストラップコードのどこかに定義すると思いますinit()。ただし、を使用したいのでslf4j-log4j、ロガーを定義してクラスパスで使用できるようにする場所に戸惑っています。 これはSLF4Jの根本的な目的(ファサードとして)に違反しているとは思いません。SLF4JAPIを使用する私のコードは、これらのロガーが存在することを知らないためです。私のコードは、SLF4J APIへの通常の呼び出しを行うだけで、クラスパスで見つけたlog4jロガーに転送します。 しかし、Javaでクラスパスにこれらのlog4jロガーを設定するにはどうすればよいですか。
189 java  logging  log4j  slf4j 

4
slf4j-simpleの設定方法
実装としてのapi 1.7およびslf4j-simple。この組み合わせでログレベルを構成する方法が見つかりません。 誰か助けてくれますか?
166 java  logging  slf4j 

3
異なるメッセージを2つのファイルに記録するLogback
ロギングを行うためにlogback / slf4jを使用しています。ログファイルを解析して一部のデータを分析したいので、大きなファイル(ほとんどがデバッグステートメントで構成されている)を解析する代わりに、それぞれが別のファイルにログを記録する2つのロガーインスタンスが必要です。1つは分析用、もう1つは多目的ロギング用です。これがLogbackや他のロガーで可能かどうか誰かが知っていますか?
146 java  logging  logback  slf4j 

8
スレッドプールでMDCを使用する方法
私たちのソフトウェアでは、MDCを幅広く使用して、セッションIDやWebリクエストのユーザー名などを追跡しています。これは、元のスレッドで実行している間は正常に機能します。ただし、バックグラウンドで処理する必要があるものはたくさんあります。そのために、いくつかの自己ロール非同期実行サービスとともにjava.concurrent.ThreadPoolExecutorおよびjava.util.Timerクラスを使用します。これらのサービスはすべて、独自のスレッドプールを管理します。 このような環境でのMDCの使用について、Logbackのマニュアルでは次のように述べています。 マップされた診断コンテキストのコピーは、開始スレッドから常にワーカースレッドに継承されるとは限りません。これは、java.util.concurrent.Executorsがスレッド管理に使用される場合です。たとえば、newCachedThreadPoolメソッドはThreadPoolExecutorを作成し、他のスレッドプールコードと同様に、複雑なスレッド作成ロジックを備えています。 このような場合、タスクをエグゼキューターに送信する前に、元の(マスター)スレッドでMDC.getCopyOfContextMap()を呼び出すことをお勧めします。タスクが実行されると、最初のアクションとして、MDC.setContextMapValues()を呼び出して、元のMDC値の格納されたコピーを新しいExecutorマネージスレッドに関連付けます。 これは問題ありませんが、これらの呼び出しを追加することを忘れるのは非常に簡単であり、手遅れになるまで問題を認識する簡単な方法はありません。Log4jの唯一の兆候は、ログにMDC情報が欠落していることと、Logbackを使用すると古いMDC情報が取得されることです(トレッドプールのスレッドは、実行された最初のタスクからMDCを継承するため)。どちらも本番システムでは深刻な問題です。 私たちの状況は特別なものだとは思いませんが、この問題についてウェブ上であまり見つけることができませんでした。どうやら、これは多くの人がぶつかる問題ではないので、それを回避する方法がなければなりません。ここで何が悪いのでしょうか?
146 java  logging  slf4j  logback  mdc 

4
SLF4J / Logbackでマーカーを使用するためのベストプラクティス
プロジェクトでSLF4JとLogbackの組み合わせをしばらく使用しており、非常に満足していますが、ロギング戦略は非常に単純で、単純なクラスベースのロガーを使用し、MDCやマーカーなどの派手なものは使用していません。 私が知りたいのは、コミュニティの誰かが実際にこれらの機能を使用しているかどうか、およびロギング/フィルタリングを改善するためにどのように使用されているかです。 私は特に、ロギングに[1]マーカーをどこで、なぜ、どのように使用するかについて興味があります。それらはロギングにセマンティックコンテキストを追加するためのかなりきちんとした機能として私を襲います-たとえば、クラスが複数の懸念を処理している間、タスク/懸念固有のマーカーを使用してログステートメントを区別することができます。 ロギングでマーカーを作成して使用するためのベストプラクティス、規則、または戦略は何でしょうか。 更新:私が思っているのは、マーカーを使用する理由ではなく、どのように部分を使用するかです。マーカーに名前を付ける上でいくつかの良い習慣があります(たとえば、スペースを含むプレーンテキストまたはダッシュ/アンダースコア/句読点で区切られたキーワードスタイル名を使用する) )、「標準名」のプールのようなものがあれば、ビジネス機能に基づいて名前を付けます。おそらく私自身で理解できる質問ですが、これらの機能を体系的に使用して開発者のチームに紹介したい場合は、正式なガイドラインのセットを用意することは理にかなっています... [1] -する方法を尋ねることによって使用マーカーを、私は本当に(それはかなりまっすぐ進む本当にある)APIを使用する方法を求めていないのです-私はむしろ1が一貫マーカーを使用して周りのロギングを設定する方法を、より一般的なレベルに言及しています
127 java  logging  slf4j  logback  markers 

8
Javaのロギングはどうなっていますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 他のパッケージではなく、次のパッケージのいずれかを使用するのはなぜですか? Javaロギング コモンズロギング Log4j SLF4j ログバック
117 java  logging  log4j  logback  slf4j 

10
SLF4J:クラス「org.slf4j.impl.StaticLoggerBinder」の読み込みに失敗しました。エラー
Eclipse IDE(インディゴ、ジュノとケプラー(32ビットおよび64ビットバージョン)) プラットフォーム:Windows、Ubuntu、Mac M2eバージョン:1.1.0.20120530-0009、1.2.0.20120903-1050、1.3.0.20130129-0926、 1.4.0.20130601-0317 一般的な情報 上記のエラーは、m2eをバージョン1.1にアップデートした後に発生しました。m2e 1.1を削除し、m2e 1.0にロールバックすることで、すべてが正常に機能しました。WindowsとUbuntuで問題を再現しようとすると、まったく同じエラーが発生しました。slf4j-apiおよびlogbackの多数の構成がテストされましたが、どれも機能していないようです。 このエラーは、slf4jの依存関係を宣言していなくても、どのMavenプロジェクトでも発生します。 新しいMavenプロジェクト-> maven-archetype-quickstart そして 新しいMavenプロジェクト->アーキタイプを選択しないシンプルなプロジェクト 結果に SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". テスト環境と構成 MacではEclipse IndigoおよびEclipse Juno(32ビットと64ビットの両方)、Ubuntuでは32ビット、Windowsでは64および32ビットでテスト済み。Juno Classic、Junoモデリングツール、Kepler Standard、Keplerモデリングツールのテスト済みの新規インストールしたところ、同じエラーが発生しました。 エラーは、clean、install、test、deploy、generate-sources、validate、compile、package、integration-test、verify、および目標cleanと残りの目標の組み合わせで表示されます。パラメータ-eと-Xも表示されます。m2eリポジトリーを削除して最初からダウンロードしようとしたが、成功しなかった。3つの異なるマシンでテストされ、上記のすべてのシステムで仮想ボックスがテストされましたが、同じエラーが発生しました。 slf4j-apiとlogback-coreの依存関係を解決するすべての異なるlogback構成(1.0.4から1.0.13まで)を試してみましたが、すべて同じエラーが発生しました: <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version></version> </dependency> すべての異なる(1.6.1から1.7.5に)slf4j-simple構成を試しました。 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version></version> <scope>compile</scope> </dependency> すべての異なる(1.6.1から1.7.5への)log4j-over-slf4j構成を試しました。 <dependency> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> <version></version> <scope>compile</scope> </dependency> すべての異なる(1.6.1から1.7.5に)slf4j-jdk14構成を試しました。 <dependency> …

11
SLF4Jを使用するようにHibernate 4でロギングを構成するには
使用されているHibernate 3.x slf4jロギング用。Hibernate 4.xはjboss-logging。ロギングにHibernate 4とSLF4Jを使用するスタンドアロンアプリケーションを書いています。 SLF4Jにログを記録するようにHibernateを構成するにはどうすればよいですか? それが不可能な場合、どうすればHibernateのロギングを構成できますか? ロギングに関する Hibernate 4.1マニュアルのセクションは、それが...であるという警告で始まります。 完全に古くなっています。Hibernateは4.0以降のJBoss Loggingを使用しています。これは、このコンテンツを開発者ガイドに移行する際に文書化されます。 ... SLF4Jについて話し続けるので、役に立たない。入門ガイドも開発者ガイドも、ロギングについてはまったく触れていません。移行ガイドも同様です。 jboss-logging自体のドキュメントを探しましたが、何も見つけることができませんでした。GitHubのページは沈黙している、とJBossのコミュニティプロジェクトのページには、でも、リストのjboss-ロギングを行いません。プロジェクトのバグトラッカーにドキュメントの提供に問題があるのではないかと思いましたが、実際はそうではありませんでした。 良いニュースは、JBoss AS7などのアプリケーションサーバー内でHibernate 4を使用する場合、ロギングの大部分が処理されることです。しかし、スタンドアロンアプリケーションでどのように構成できますか?

1
log4j2でslf4jを使用する価値はありますか
log4j2でslf4jを使用するかどうかを決定できません。オンライン投稿に基づくと、パフォーマンスに影響があるようには見えませんが、本当に必要ですか? また、これらの点は、log4j2を支持するものです。 SLF4Jはアプリケーションに文字列のログを強制します。Log4j 2 APIは、テキストをログに記録する場合、CharSequenceのロギングをサポートしますが、オブジェクトをそのままロギングすることもサポートします。 Log4j 2 APIは、メッセージオブジェクトのロギング、Java 8ラムダ式、ガベージフリーロギングのサポートを提供します(可変引数配列の作成を回避し、CharSequenceオブジェクトのロギング時に文字列の作成を回避します)。
114 java  logging  log4j  slf4j  log4j2 

22
Lombokの@ Slf4jとIntellijを使用したビルド:シンボルログが見つかりません
コマンドラインから問題なくビルドできるMavenプロジェクトがあります。しかし、IntelliJでビルドすると、次のエラーが発生します。 java: FileName.java:89: cannot find symbol symbol : variable log Javaファイルで定義またはインポートされたログはありませんが、 @Slf4j final public class FileName { ログクラスを定義するクラス本体の前のステートメント。 プロジェクト構造ウィンドウでは、次のクラスがあります。 Maven: org.slf4j:jcl-over-slf4j:1.6.1 Maven: org.slf4j:slf4j-api:1.6.6 Maven: org.slf4j:slf4j-log4j12:1.6.6 Maven: org.slf4j:slf4j-simple:1.6.6 ライブラリの下にリストされ、ダウンロードされて利用可能であることが示されています。 コマンドラインからmavenを使用してビルドするのにIntelliJを介してビルドしない理由と問題の解決方法はありますか?

1
Java Loggingフレームワークのマーカーとは何ですか?それらを使用する理由は何ですか?
読んだときに初めてマーカーについて聞いた: http://slf4j.org/faq.html Loggerオブジェクトの使用可能なメソッドを確認します。 http://www.slf4j.org/api/org/slf4j/Logger.html http://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Logger.html そして見つかったインターフェース: http://www.slf4j.org/api/org/slf4j/Marker.html http://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Marker.html 私が得るより詳細な情報: http://logback.qos.ch/manual/filters.html しかし、まだ混乱しています... それらをどのように使用するかではなく、理由を尋ねるので注意してください。これは、以下の複製ではありません。 SLF4J / Logbackでマーカーを使用するためのベストプラクティス UPDATEマーカーを使用する場合、XMLまたは.propertyファイルで構成を行う代わりにカスタムJavaコードを記述する必要があるようです... 更新2 http://logback.qos.ch/manual/appenders.html#OnMarkerEvaluatorから Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN"); logger.error(notifyAdmin, "This is a serious an error requiring the admin's attention", new Exception("Just testing"));
110 java  logging  log4j  slf4j  logback 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.