在Web应用程序中,我使用多线程同时解析多个XML文件。
现在,在解析过程的不同阶段,消息将被发送到日志。
我正在尝试在发生错误时将正确的消息放入日志中 - 但是如何确保如果一个线程由于某种原因而失败,那么该特定错误的整个消息列表将被发送到一个块中的日志?即,不应混淆不同线程的消息(因为这将使我很难准确理解错误是什么以及哪个线程报告错误)。
答案 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