0

Web クライアントからの要求を受け入れ、計算を行い、結果を返す Java サーバー (Java 用の Socket.IO に基づいていますが、それは問題の一部ではありません) を持っています。

サーバーは、ログに log4j を使用するいくつかのライブラリを使用します。

計算が長いので、最終結果だけでなくログもクライアントに送りたいです。

もちろん、各クライアントに送信したいのは、その要求に関連するログ行だけです。

だから、私の質問は、特定の関数呼び出し中に生成されたすべてのログが特定のロガーに送られるように、log4j をどのように構成できますか?

4

1 に答える 1

3

はい、可能です。まず、MDC(マップされた診断コンテキスト)の概念に精通する必要があります。基本的には、コンテンツを格納するスレッドごとのロギングコンテキスト(読み取り-ハッシュマップ)です。log4jは、MDC値に基づいてログ出力をさまざまな宛先に送信するように構成できます。そのため、各ユーザーのログ出力を、ユーザーにちなんで名付けられたファイルに送信できます。したがって、長い操作を開始するときにMDCにユーザー名(または何らかの識別子)を設定すると、操作のすべてのログが特定の場所(構成されているロガーに応じてファイル)に移動し、MDCをクリアします。操作が完了したとき。

ここここにMDCを使用するための2部構成のチュートリアルがあります。
ここで提案されているように、理想的には、この目的のために独自のlog4jロガーも作成します。log4jでMDCを使用してログファイルに動的に名前を付ける

于 2013-01-01T11:46:45.193 に答える