Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 跨多线程任务的日志关联_Java_Logging_Log4j - Fatal编程技术网

Java 跨多线程任务的日志关联

Java 跨多线程任务的日志关联,java,logging,log4j,Java,Logging,Log4j,我的软件中的任务涉及几个步骤,每个步骤可能在不同的线程中执行,也可能不在不同的线程中执行。每个步骤都有一些日志,我使用log4j作为日志服务 一个令人头痛的问题是,很难将不同线程打印的日志与它们所属的任务关联起来。在单线程模式下,线程名称是一个很好的指示器,但在多线程模式下不起作用。我不想通过线程传递任务指示器,因为这很烦人,会给程序员带来负担 我想知道是否有人面临同样的问题,并有一个好的解决方案?谢谢。在MDC(映射诊断上下文)和NDC(嵌套诊断上下文)上查找。以下是这篇文章的摘录 嵌套诊断上

我的软件中的任务涉及几个步骤,每个步骤可能在不同的线程中执行,也可能不在不同的线程中执行。每个步骤都有一些日志,我使用log4j作为日志服务

一个令人头痛的问题是,很难将不同线程打印的日志与它们所属的任务关联起来。在单线程模式下,线程名称是一个很好的指示器,但在多线程模式下不起作用。我不想通过线程传递任务指示器,因为这很烦人,会给程序员带来负担

我想知道是否有人面临同样的问题,并有一个好的解决方案?谢谢。

在MDC(映射诊断上下文)和NDC(嵌套诊断上下文)上查找。以下是这篇文章的摘录

嵌套诊断上下文(NDC)和映射诊断上下文(MDC) 在同时涉及一个应用程序的情况下提供帮助 为多个客户服务,并且您对分离或 将日志内容与这些多个客户端中的每个客户端区分开来。网 应用程序就是这种情况的一个很好的例子

那么,我们如何从多个客户机中分离或区分内容呢?通过 用客户机特定信息标记每个日志语句。这个,在 一个典型的Web应用程序可能包括 客户端的IP地址,该地址可供servlet使用 容器。因此,在NDC中,当 输入上下文,并在离开该上下文时将其弹出。log4j使用 在写入追加器时,如果在 在关联的布局中,使用%x转换模式

在MDC(映射的诊断上下文)和NDC(嵌套的诊断上下文)上查找。以下是这篇文章的摘录

嵌套诊断上下文(NDC)和映射诊断上下文(MDC) 在同时涉及一个应用程序的情况下提供帮助 为多个客户服务,并且您对分离或 将日志内容与这些多个客户端中的每个客户端区分开来。网 应用程序就是这种情况的一个很好的例子

那么,我们如何从多个客户机中分离或区分内容呢?通过 用客户机特定信息标记每个日志语句。这个,在 一个典型的Web应用程序可能包括 客户端的IP地址,该地址可供servlet使用 容器。因此,在NDC中,当 输入上下文,并在离开该上下文时将其弹出。log4j使用 在写入追加器时,如果在 在关联的布局中,使用%x转换模式


为此目的创建了两个类org.apache.log4j.MDC和org.apache.log4j.NDC。
只需参考Javadocs:和

有两个类org.apache.log4j.MDC和org.apache.log4j.NDC就是为了这个目的而创建的。 只需参考Javadocs:and