問題タブ [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 投票する
2 に答える
22931 参照

java - MDC に値を入れることができません

改札内onBeginRequest()のいくつかの値を記録しようとしています。RequestCycle()しかし、値はデバッグ ファイルに記録されていません。の MDC に値を入れていますRequestCycleListeners()

コードは次のとおりです。

};

「serverName」、「sessionId」がデバッグ ファイルに記録されることを期待しています。

listenerを拡張しているクラスにこれを追加しましたWebApplication

DEBUG appender以下のように見える log4j.xml を使用しています。

ルートタグでスコープを定義しています:

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

logging - 「カテゴリ」に基づいてログバック ログを分割する方法

リクエストを「ライブ」または「テスト」システムにルーティングするサーブレットがあります。

サーブレットは、URI パスに基づいてこれを認識します。ログを 2 つの別々のファイル (1 つはライブ用、もう 1 つはテスト用) に書きたいと思います。

だから私はmdcを使う必要があることを知っています

そう...

私の logback.xml には、2 つのアペンダーがあります。test または live の MDC 値に基づいて適切なアペンダーを選択するようロガーに指示するにはどうすればよいですか?

0 投票する
0 に答える
136 参照

java - log4j: エラー/例外の詳細をバブルアップする

私のチームは、ロギングの目的で slf4j を使用しており、クラスの階層の最上位にあるエラー/例外状況のロギングを調べています (例: クラス A-> クラス B-> クラス C(ここでは例外) === クラスにログイン)方法)。

情報の損失を避けるために、特定の詳細を最下位のクラスから上位にバブルアップできればよいでしょう。(多くの場所で、ある例外を別の例外に翻訳しています。そのような場合、どこで何が起こったのか手掛かりがありません。)

MDCを使用する以外にlog4jでこれを行う方法はありますか?

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

java - log4j2 (xml の MDC) を使用して異なるファイルに異なるログを書き込む方法は?

今、私は次のような構造を使用しています: アペンダー:

ロガー:

ただし、MDC キーでは機能しません。xml で MDC キーを使用して RollingFileAppender を構成するにはどうすればよいですか?

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

java - Log4J 変換指定子 "%l" がスタック トレース全体を出力しない

プロジェクトでエラーが発生した場合に備えて、メールを送信しようとしています。このために、Log4j のSMTPAppender. プロジェクトを開発モードで実行しており、以下を使用してエラーの完全なスタック トレースを取得しようとしていConversionPatternますSMTPAppender

次のようにエラーをスローしています。

%mはテキストに置き換えられますTo get the MDC values !!! が、%l(小文字L) は、ロギング要求を発行する呼び出し元の完全修飾クラス名を行番号とともに出力しています (%c と同様に、%c は行番号を出力しないのに対し、%l は行番号を出力しないという 1 つの違いがあります)。 )。

スタック トレースを取得する正しい方法は何%lですか? また、スタック トレース全体を取得できないのはなぜですか?

0 投票する
0 に答える
1054 参照

java - log4j: MDC 構成の問題

各ログにユーザー名を追加しようとしています。MDC がそれを行うための適切なソリューションであることがわかり、そのチュートリアルに従いました。

テスト用のログ スニペットを次に示します。ユーザー名の代わりに「TEST」という単語を出力します。

ご覧のとおりAuthenticationFilter、Struts2 のインターセプターやアクションでは機能せず、 でのみ機能するようです。私はこのように実装AuthenticationFilterしました:

これをファイルに追加しましたweb.xml

そして、これは私が使用するパターンですlog4j.xml

MDCについてわからないことがあると思います。MDCはリクエストごとに呼び出されるので、マップを設定できThreadLocal、各リクエストには独自のスレッドがあると思いました(私ThreadLocalも正しく理解していない可能性があります)。

構成で MDC を使用できるようにするには、何を調べて変更する必要がありますか?

編集:

ログを追加したので、マップからのデータがいつ削除されたかを確認できます。最初のアクション/インターセプター ログの前のマップには何もありません。私は次のようなものを見ると思っていました:

  • AuthenticationFilter - テスト -
  • インターセプターのログ
  • AuthenticationFilter userName が削除されました
0 投票する
1 に答える
4890 参照

java - MDC から削除する場合

私は最近、ロギング時にMDCを使用する魔法を発見しました。それは完全に機能します。

私は次の方法を持っています:

これは、すべての jsp の最初のアクションとして呼び出されます。これにより、セッションの詳細をログでうまく追跡できます。

removeただし、これらのマップ エントリのタイミングをどのように知ることができますか? マップを整理するには、どのイベントを監視する必要がありますか?

Tomcat でホストしています。スレッドを再利用する場合、これらは本質的にスレッドローカルであるため、メモリリークは発生しません。そのため、スレッドが最後に使用されたときからそれぞれputが古いものを上書きします。putそうでない場合、またはホストされていないものでホストされている場合、基本的にマップを永遠に成長させるか、少なくともホストを再起動するまで成長させます。

私の質問の本質は、特定のセッションまたはスレッドが終了し、解放されようとしていることを示すイベントが検出できるかどうかです。