Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/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 添加trace.id和transaction.id Springboot_Java_Spring Boot_Logging_Log4j2_Elastic Common Schema - Fatal编程技术网

Java 添加trace.id和transaction.id Springboot

Java 添加trace.id和transaction.id Springboot,java,spring-boot,logging,log4j2,elastic-common-schema,Java,Spring Boot,Logging,Log4j2,Elastic Common Schema,我有一个Springboot微型服务。对于日志记录,我使用弹性公共方案,使用实现 我想设置trace.ID和transaction.ID,但不确定如何设置 还有一个问题,我认为trace.ID应该是通过多个系统跟踪请求的ID。transaction.ID仅用于服务内部?我以为我已经记录了这一点,但最接近的是Log4j审计。我想我需要在我的博客中添加一个新条目。简单的回答是使用log4j2。首先,当用户登录时,创建一个会话映射,其中包含您希望在每个请求中捕获的数据,例如用户的ip地址和loginI

我有一个Springboot微型服务。对于日志记录,我使用弹性公共方案,使用实现

我想设置trace.ID和transaction.ID,但不确定如何设置


还有一个问题,我认为trace.ID应该是通过多个系统跟踪请求的ID。transaction.ID仅用于服务内部?

我以为我已经记录了这一点,但最接近的是Log4j审计。我想我需要在我的博客中添加一个新条目。简单的回答是使用log4j2。首先,当用户登录时,创建一个会话映射,其中包含您希望在每个请求中捕获的数据,例如用户的ip地址和loginId。然后创建servlet过滤器或Spring拦截器,将该数据以及唯一的请求id添加到log4j2的线程上下文映射中

所有分支事件都将包括ThreadContext中的数据。ECSLayout自动包括ThreadContextMap中的所有字段

最后,您需要将RequestContext传播到下游服务。您可以通过创建一个Spring拦截器来实现这一点,该拦截器连接到RestTemplate中,RestTemplate将RequestContext字段转换为HTTP头。然后,下游服务有一个过滤器或Spring拦截器,将头转换回RequestContext属性。Log4j审计(如上所述)有所有这些组件的示例和实现


我应该补充一点,上面描述的方法没有实现规范中描述的跟踪,因此它也与Elasticsearch的不兼容。然而,值得注意的是,如果将Elasticsearch的分布式跟踪支持与New Relic的分布式跟踪支持结合在一起,它们将互相攻击。

我想我已经记录了这一点,但最接近的是Log4j审计。我想我需要在我的博客中添加一个新条目。简单的回答是使用log4j2。首先,当用户登录时,创建一个会话映射,其中包含您希望在每个请求中捕获的数据,例如用户的ip地址和loginId。然后创建servlet过滤器或Spring拦截器,将该数据以及唯一的请求id添加到log4j2的线程上下文映射中

所有分支事件都将包括ThreadContext中的数据。ECSLayout自动包括ThreadContextMap中的所有字段

最后,您需要将RequestContext传播到下游服务。您可以通过创建一个Spring拦截器来实现这一点,该拦截器连接到RestTemplate中,RestTemplate将RequestContext字段转换为HTTP头。然后,下游服务有一个过滤器或Spring拦截器,将头转换回RequestContext属性。Log4j审计(如上所述)有所有这些组件的示例和实现


我应该补充一点,上面描述的方法没有实现规范中描述的跟踪,因此它也与Elasticsearch的不兼容。然而,值得注意的是,如果将Elasticsearch的分布式跟踪支持与New Relic的分布式跟踪支持结合在一起,它们将相互影响。

如下配置您的日志模式

%d{yyyy-MM-dd HH:MM:ss.SSS}%thread[%X{trace-id}][%-5level]%class{0}-%msg%n

将跟踪Id放入MDC中。(MDC属于特定的线程上下文)

因此,每当日志打印消息时,它都会打印跟踪id。
按照下面的文章进行操作。

如下配置日志模式

%d{yyyy-MM-dd HH:MM:ss.SSS}%thread[%X{trace-id}][%-5level]%class{0}-%msg%n

将跟踪Id放入MDC中。(MDC属于特定的线程上下文)

因此,每当日志打印消息时,它都会打印跟踪id。 跟随下面的文章

  `MDC.put("trace-id", "traceid1");`