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

Log4Jおよびjava.util.loggingと比較した場合、多くの新機能を備えたJavaベースのプログラム用の最新のロギング機能。

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 

5
ログレベル-ログバック-ログレベルを割り当てるための経験則
現在のプロジェクトでlogbackを使用しています。 6つのレベルのロギングを提供します。TRACEDEBUG INFO WARN ERROR OFF 一般的なアクティビティのログレベルを決定するための経験則を探しています。たとえば、スレッドがロックされている場合、ログメッセージをデバッグレベルまたは情報レベルに設定する必要があります。または、ソケットが使用されている場合、その特定のIDをデバッグレベルまたはトレースレベルで記録する必要があります。 各ロギングレベルの例を追加して回答をいただければ幸いです。
258 logging  logback 

12
ロガーのさまざまなレベルをさまざまな宛先に記録するようにLogbackを構成するにはどうすればよいですか?
ロガーのさまざまなレベルをさまざまな宛先に記録するようにLogbackを構成するにはどうすればよいですか? たとえば、次のようLogback構成与えられ、記録LogbackますINFOへのメッセージSTDOUTとERRORメッセージをするにはSTDERR? (この例は、Chapter 3:Logback Configurationにlogback-examples/src/main/java/chapters/configuration/sample4.xml示されている例のバリエーションであることに注意してください)。 <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern> %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n </pattern> </encoder> </appender> <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern> %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n </pattern> </encoder> <target>System.err</target> </appender> <!-- What is the effective level of "chapters.configuration"? --> <logger name="chapters.configuration" level="INFO" additivity="false"> <appender-ref ref="STDOUT" …
156 java  logging  logback 

6
log4j対logback [終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 この質問を改善する 自作のラッパーの背後でlog4jを使用しています。今後はさらに多くの機能を使用する予定です。 ログバックに更新する必要がありますか? (つまり、フレームワークはSLF4Jのようなファサードではありません)
152 java  logging  log4j  logback 

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 

10
すべてのログの開始時にlogbackが独自のステータスを出力しないようにするにはどうすればよいですか?
これは不注意なエラーのようですが、原因がわかりません。logback / slf4jによるロギング(最新バージョンslf4j-api-1.6.1、logback core / classic 0.9.24)。テストのための最も単純なログ構成は次のとおりです。 <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <!-- DONT USE THIS FORMATTER FOR LIVE LOGGING THE %L LINE NUMBER OUTPUTTER IS SLOW --> <pattern>%le %-1r [%c{1}:%L] %m%n</pattern> </layout> </appender> <root level="DEBUG"> <appender-ref ref="stdout" /> </root> </configuration> すべてのログ設定は、logbackの内部ステータス行から始まります。 11:21:27,825 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT …
145 logback 

6
ログバックのためにプログラムでルートロギングレベルを変更する方法
次のlogback.xmlファイルがあります。 <configuration debug="true"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration> ここで、特定のイベントが発生したときに、プログラムによってルートロガーのレベルをdebugからerrorに変更したいと思います。変数置換は使用できません。これはコード内で行う必要があります。 どうすればできますか?ありがとう。
144 java  logging  logback 

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> …

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 

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のいずれかを使用したいのですが、共通の構成を使用して、古いプロジェクトのロギングを「新しい」ロギングフレームワークが最終的に何になるかにマージしたいと思います。

6
logback.xmlのXMLスキーマまたはDTD?
IDEやEclipseなどのIDEで少なくとも非常に基本的な検証とオートコンプリートを行うには、logback.xmlファイルのXMLスキーマまたはDTDがどれほど優れているかについて、ネット上でいくつかの議論を見てきましたが、任意のソリューション。 しましたか?
108 java  xsd  logback  dtd  xml 

1
ログバックエンコーダーパターンのドキュメントはどこにありますか
ログバックのすべてのドキュメントを調べましたが、次のような、ログ記録時にエンコーダーのパターンを構成するためのドキュメントがどこにも見つかりません。 <encoder> <pattern>%d{HH:mm:ss.SSS} %-4relative %-5level %logger{35} - %msg%n</pattern> </encoder> パターンを構成するためのさまざまなオプションを説明した表(log4jにあるような表)が欲しいのですが。 パターンのドキュメントはどこにありますか?多分それらは別のプロジェクトで定義されていますか?
93 java  logging  log4j  logback 

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