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

java-如何在多线程web应用程序中处理错误日志记录,java,multithreading,Java,Multithreading,在web应用程序中,我使用多线程同时解析多个XML文件 现在,在解析过程的不同阶段,消息被发送到日志 当发生错误时,我试图将正确的消息放入日志中,但如何确保如果一个线程因某种原因失败,那么该特定错误的整个消息列表将发送到单个块中的日志中?i、 e.不应混淆不同线程的消息(因为这将使我很难准确理解错误是什么以及哪个线程报告了错误)。您应该利用在这种情况下,您应该使用MDC或NDC,例如,请参见 因此,每个线程都将有一个唯一的id,错误消息将再次写入这个唯一的id 在日志文件中搜索特定线程的任何错误

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

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


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

您应该利用在这种情况下,您应该使用MDC或NDC,例如,请参见

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

在日志文件中搜索特定线程的任何错误时,可以根据此Id对行进行grep

我认为,从设计和性能的角度来看,试图维护每个线程的日志行序列不是一个好主意


看看它是否有帮助。

这不是一种改造——它是可能发生的事情的伪代码。在已经被证明有效的日志框架内或之上构建这样的设计是很好的!
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