java-如何在多线程Web应用程序中处理错误日志记录

时间:2012-07-04 13:19:40

标签: java multithreading

在Web应用程序中,我使用多线程同时解析多个XML文件。

现在,在解析过程的不同阶段,消息将被发送到日志。

我正在尝试在发生错误时将正确的消息放入日志中 - 但是如何确保如果一个线程由于某种原因而失败,那么该特定错误的整个消息列表将被发送到一个块中的日志?即,不应混淆不同线程的消息(因为这将使我很难准确理解错误是什么以及哪个线程报告错误)。

3 个答案:

答案 0 :(得分:1)

您应该利用Log4j's MDC or NDC.

答案 1 :(得分:1)

在这种情况下,您应该使用MDC或NDC,例如http://veerasundar.com/blog/2009/11/log4j-mdc-mapped-diagnostic-context-example-code/

因此每个线程都有一个唯一的id,错误消息将再次写入这个唯一的id。

在特定线程的日志文件中搜索任何错误时,您可以通过此Id grep这些行。

我不认为从设计和性能角度来看,尝试维护每个线程的一系列行记录是一个好主意。

看看它是否有帮助。

答案 2 :(得分: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