問題タブ [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.
java - MDC に値を入れることができません
改札内onBeginRequest()
のいくつかの値を記録しようとしています。RequestCycle()
しかし、値はデバッグ ファイルに記録されていません。の MDC に値を入れていますRequestCycleListeners()
。
コードは次のとおりです。
};
「serverName」、「sessionId」がデバッグ ファイルに記録されることを期待しています。
listener
を拡張しているクラスにこれを追加しましたWebApplication
。
DEBUG appender
以下のように見える log4j.xml を使用しています。
ルートタグでスコープを定義しています:
logging - 「カテゴリ」に基づいてログバック ログを分割する方法
リクエストを「ライブ」または「テスト」システムにルーティングするサーブレットがあります。
サーブレットは、URI パスに基づいてこれを認識します。ログを 2 つの別々のファイル (1 つはライブ用、もう 1 つはテスト用) に書きたいと思います。
だから私はmdcを使う必要があることを知っています
そう...
私の logback.xml には、2 つのアペンダーがあります。test または live の MDC 値に基づいて適切なアペンダーを選択するようロガーに指示するにはどうすればよいですか?
java - log4j: エラー/例外の詳細をバブルアップする
私のチームは、ロギングの目的で slf4j を使用しており、クラスの階層の最上位にあるエラー/例外状況のロギングを調べています (例: クラス A-> クラス B-> クラス C(ここでは例外) === クラスにログイン)方法)。
情報の損失を避けるために、特定の詳細を最下位のクラスから上位にバブルアップできればよいでしょう。(多くの場所で、ある例外を別の例外に翻訳しています。そのような場合、どこで何が起こったのか手掛かりがありません。)
MDCを使用する以外にlog4jでこれを行う方法はありますか?
java - log4j2 (xml の MDC) を使用して異なるファイルに異なるログを書き込む方法は?
今、私は次のような構造を使用しています: アペンダー:
ロガー:
ただし、MDC キーでは機能しません。xml で MDC キーを使用して RollingFileAppender を構成するにはどうすればよいですか?
java - Log4J 変換指定子 "%l" がスタック トレース全体を出力しない
プロジェクトでエラーが発生した場合に備えて、メールを送信しようとしています。このために、Log4j のSMTPAppender
. プロジェクトを開発モードで実行しており、以下を使用してエラーの完全なスタック トレースを取得しようとしていConversionPattern
ますSMTPAppender
。
次のようにエラーをスローしています。
%m
はテキストに置き換えられますTo get the MDC values !!!
が、%l
(小文字L
) は、ロギング要求を発行する呼び出し元の完全修飾クラス名を行番号とともに出力しています (%c と同様に、%c は行番号を出力しないのに対し、%l は行番号を出力しないという 1 つの違いがあります)。 )。
スタック トレースを取得する正しい方法は何%l
ですか? また、スタック トレース全体を取得できないのはなぜですか?
java - log4j: MDC 構成の問題
各ログにユーザー名を追加しようとしています。MDC がそれを行うための適切なソリューションであることがわかり、そのチュートリアルに従いました。
テスト用のログ スニペットを次に示します。ユーザー名の代わりに「TEST」という単語を出力します。
ご覧のとおりAuthenticationFilter
、Struts2 のインターセプターやアクションでは機能せず、 でのみ機能するようです。私はこのように実装AuthenticationFilter
しました:
これをファイルに追加しましたweb.xml
:
そして、これは私が使用するパターンですlog4j.xml
MDCについてわからないことがあると思います。MDCはリクエストごとに呼び出されるので、マップを設定できThreadLocal
、各リクエストには独自のスレッドがあると思いました(私ThreadLocal
も正しく理解していない可能性があります)。
構成で MDC を使用できるようにするには、何を調べて変更する必要がありますか?
編集:
ログを追加したので、マップからのデータがいつ削除されたかを確認できます。最初のアクション/インターセプター ログの前のマップには何もありません。私は次のようなものを見ると思っていました:
- AuthenticationFilter - テスト -
- インターセプターのログ
- AuthenticationFilter userName が削除されました
java - MDC から削除する場合
私は最近、ロギング時にMDCを使用する魔法を発見しました。それは完全に機能します。
私は次の方法を持っています:
これは、すべての jsp の最初のアクションとして呼び出されます。これにより、セッションの詳細をログでうまく追跡できます。
remove
ただし、これらのマップ エントリのタイミングをどのように知ることができますか? マップを整理するには、どのイベントを監視する必要がありますか?
Tomcat でホストしています。スレッドを再利用する場合、これらは本質的にスレッドローカルであるため、メモリリークは発生しません。そのため、スレッドが最後に使用されたときからそれぞれput
が古いものを上書きします。put
そうでない場合、またはホストされていないものでホストされている場合、基本的にマップを永遠に成長させるか、少なくともホストを再起動するまで成長させます。
私の質問の本質は、特定のセッションまたはスレッドが終了し、解放されようとしていることを示すイベントが検出できるかどうかです。