0

Web アプリで、マルチスレッドを使用して複数の XML ファイルを同時に解析しています。

現在、解析プロセスのさまざまな段階で、メッセージがログに送信されています。

エラーが発生したときに正しいメッセージをログに記録しようとしていますが、1 つのスレッドが何らかの理由で失敗した場合、その特定のエラーのメッセージのリスト全体が 1 つのブロックにログに送信されるようにするにはどうすればよいですか? つまり、異なるスレッドのメッセージを混同しないでください (これにより、エラーの内容とエラーを報告したスレッドを正確に理解することが非常に難しくなります)。

4

3 に答える 3

1

Log4j の MDC または NDCを活用する必要があります。

于 2012-07-04T13:23:14.500 に答える
1

この場合、MDC または NDC を使用する必要があります。たとえば、 http: //veerasundar.com/blog/2009/11/log4j-mdc-mapped-diagnostic-context-example-code/を参照してください。

したがって、すべてのスレッドには一意の ID があり、エラー メッセージはこの一意の ID に再度書き込まれます。

特定のスレッドのログ ファイルでエラーを検索する場合、この ID で行を grep できます。

ロギングのためにスレッドごとに一連の行を維持しようとすることは、設計とパフォーマンスの観点からは良い考えだとは思いません。

それが役立つかどうかを確認してください。

于 2012-07-04T18:20:18.197 に答える
0
myLogContainer=CreateLogContainer();
myLogContainer.push(logMessage);
myLogContainer.push(logMessage);
myLogContainer.push(logMessage);
..
myLogContainer.push(logMessage);
logger.submit(myLogContainer);
myLogContainer=CreateLogContainer(); // ready for next lot of errors
于 2012-07-04T14:06:50.510 に答える