問題タブ [mdc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3089 参照

scala - スタック可能な動作で受信をインターセプトする Akka

ここで Akka と Scala の初心者です。Scala と Akka のドメインでの私の意図を明確に表現するために、必要に応じて質問を自由に編集してください。

コード スニペットを示す前に、ここで解決したい問題があります。基本的には、チームが Akka アクターを使用してアプリケーションを開発するときに使用する共通モジュールを開発したいと考えています。主にロギングの目的で、実行時に受信機能を拡張する特性をミックスインできるようにしたいと考えています。コンパイル エラーが発生しましたが、これについては後で説明します。

しかし、まず、単純なメインを例にとります。

チーム メンバーがアプリケーションに実装する可能性のあるアクターの実装例を次に示します。

そして、これが mixin に共通の特性を提供する方法の例です:

ご覧のとおり、メッセージがたまたま String の場合、MDC にデータを追加しようとしています (基本的な例ですが、実際には、独自のカスタム タイプを確認します)。

私が得るエラーは次のとおりです。

ここで何が問題なのですか?そして、スタック可能な特性は、このようなことを達成するために放棄する権利がありますか? そうでない場合、最も慣用的な方法は何ですか?

より一般的には、「インターセプター」パターン以外にここで適用されている別のパターンはありますか?

助けてくれてありがとう!

0 投票する
1 に答える
4007 参照

regex - 空の値を検出するための Logback 置換正規表現

MDC ログ パターンに空の値が出力されないように、logback の置換機能を使用しようとしています。 http://logback.qos.ch/manual/layouts.html#replace

私はここから例に従おうとしています http://login.blogspot.com/2013/04/logback-mdc-and-empty-values.html

いくつかの背景

90% の時間で、ログ パターンが出力されます

印刷される時間の 5%

これは、後者の場合、MDC で emp と org を指定する必要がないためです。これらの場合、emp: と org: がログ行にまったく存在しないようにします。

望ましい

置換による可能な解決策

これが私の変数と私が使用しているアペンダーです。mdcPattern は、emp 値と org 値がない場合、空の文字列に解決されるという考えです。

ただし、正規表現の置換は機能しません。ログ行は次のように表示されます。

私の正規表現は少し弱いです。ログ行に置換パターンがそのまま表示される理由がわかりません。どんな助けでも大歓迎です。

0 投票する
1 に答える
95 参照

java - JAVAでMDCをログ以外の目的で使用できますか

MDC.put('アイテム', 'xxxx') MDC.get('アイテム')

ありがとうシブ

0 投票する
1 に答える
727 参照

java - で起動されたものとは異なるテスト ツリーに表示される並列テストのコンソール出力

Intellij IDEA 13.4、logback 1.1.2 で TestNG 6.8.8 を使用しています。私はたくさんのテストクラスを持っており、次のようなxmlランチャーを持っています:

また、各クラスには、個別のテスト クラスへの MDC マークがあります。

および logback.xml:

xml ランナーを thread-count="1" に変更すると、すべて問題ありません。コンソールは、各テストを独自のツリー ノードに記録します。

しかし、thread-count="3" 以上で TestNG を実行すると、いくつかのログ エントリが独自のテスト ツリー ノードではなく、他のいくつかのノードに表示されます。

たとえば、テスト「test1」のツリー ノードのコンソール出力は次のようになります。

したがって、クラス ExampleClass2 のログ エントリは、ExampleClass1 の実行結果として表示されますが、テスト「test2」のツリー ノードのコンソール出力は空です。また、コンソール出力の xml エクスポートは、一部のログ値が異なるテスト結果になることを示しています。

Intellij は、テストが担当する各出力行をどのように処理しますか? Intellij IDEA を強制して、MDC マークによってどのクラスがどのログエントリを担当しているかを何らかの形でチェックする方法はありますか? または、コンソール出力がテストツリーの場所にあることを確認する他の方法はありますか?

0 投票する
3 に答える
4886 参照

java - SLF4J MDC メモリ リーク

私はこれについてグーグルを持っていて、複数の提案を見ましたが、何も役に立たないようです。

MDC を使用する JAX-RS アプリケーションがあります。エンドポイントがヒットすると、デバッグを容易にするために transactionId が設定されます。ただし、Tomcat を停止または再起動すると、ログには次のようなエントリが記録されます。

27-Sep-2014 09:42:14.858 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoader.checkThreadLocalMapForLeaks Web アプリケーション [/core-1.0.0-RC2] は、タイプ [ org.apache.log4j.helpers.ThreadLocalMap] (値 [org.apache.log4j.helpers.ThreadLocalMap@464437fc]) およびタイプ [java.util.Hashtable] の値 (値 [{siteCode=000tst, transactionId=dc8f3a1b- 1d7a-4f91-abf6-58d015632d03}]) ですが、Web アプリケーションが停止したときに削除できませんでした。スレッドは、メモリ リークの可能性を回避するために、時間の経過とともに更新されます。

MDC が呼び出される RequestFilter があります。

これらは私の sl4fj 依存関係です:

MDC.clear() を使用した ResponseFilter がある場合、MDC から値を削除しますが、スレッドをクリアしていないようです:

27-Sep-2014 09:12:58.216 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoader.checkThreadLocalMapForLeaks Web アプリケーション [/core-1.0.0-RC2] は、タイプ [ org.apache.log4j.helpers.ThreadLocalMap] (値 [org.apache.log4j.helpers.ThreadLocalMap@391216c7]) と [java.util.Hashtable] 型の値 (値 [{}]) を削除できませんでしたWeb アプリケーションが停止したとき。スレッドは、メモリ リークの可能性を回避するために、時間の経過とともに更新されます。

どうやら log4j 1.2.17 で修正されたようですが、変更は slf4j には反映されていないようです。