我们想把spring sleuth和spring-amqp (rabbitmq)一起使用。所以我们在发布者网站上通过
amqpTemplate.convertAndSend("exchange", "key", myEvent)
并期望将tracid
和spanic
与兔子消息一起发送并填充在接收方/侦听器站点上,因此它也将记录在侦听器站点上。
@RabbitHandler
public void on(MyEvent event) {
LOGGER.warn("got a message...");
...
}
根据这篇文章,我希望这是开箱即用的。
如果我直接检查RabbitMQ消息(通过trace ),那么我可以看到消息中没有该信息,因此很可能是发件人站点有问题...
我想到的一件事是,我们配置了一个Jackson2JsonMessageConverter来允许json有效负载:
@Bean
public Jackson2JsonMessageConverter jacksonConverter(ObjectMapper objectMapper) {
return new Jackson2JsonMessageConverter(objectMapper);
}
顺便说一句。log4j模式使用< code>%X
进行配置,并打印可用的信息:
<PatternLayout pattern="%d{HH:mm:ss.SSS} %X [%thread] %-5level %logger{36} - %msg%n" />
我错过了什么?
你错过了这句话的最后一段
通过消息传递技术(如Apache Kafka或RabbitMQ)(或任何其他Spring Cloud Stream绑定器)请求
Sleuth不能与< code>RabbitHandler一起使用。就消息传递而言,它只适用于Spring Integration和Spring Cloud Stream。
名为“Connection Factory”的bean应为“org.apache.activeMQ.activeMQConnectionFactory”类型,但实际上是“org.springframework.cloud.sleuth.instrument.messaging.lazyConnectionFactory”类型 我的依赖项: > org.springframework.boot.sp
TraceId 生成规则 SOFATracer 通过 TraceId 来将一个请求在各个服务器上的调用日志串联起来,TraceId 一般由接收请求经过的第一个服务器产生,产生规则是: 服务器 IP + 产生 ID 时候的时间 + 自增序列 + 当前进程号 ,比如: 0ad1348f1403169275002100356696 前 8 位 0ad1348f 即产生 TraceId 的机器的 IP,
SLF4J 提供了 MDC (Mapped Diagnostic Contexts)功能,可以支持用户定义和修改日志的输出格式以及内容。本文将介绍 SOFATracer 集成的 SLF4J MDC功能,方便用户在只简单修改日志配置文件的前提下输出当前 SOFATracer 上下文 TraceId 以及 SpanId 。 使用前提 为了在应用中的日志正确打印 TraceId 和 SpanId 参数,
spring的侦探增加了MDC的X-B3-SpanId和SpanID。(TraceId相同) “x-b3-”前缀值与非前缀值相同。 如果其中一个值是多余的,我倾向于删除它。(减少日志的冗长) X-B3-SpanId和SPANID有什么区别吗?(X-B3-TraceId和Traceid) 是否有充分的理由将两者都记录下来? spring文档https://cloud.spring.io/spring
例如,在包括Spring Cloud Sleuth之前,人们会在他们的日志中得到这样的东西 在应用程序名称附近有2个逗号(即traceID和spanID将显示的位置)。但我的日志最初看起来像这样 为了在日志中获取应用程序名称,我在application.properties中编写了以下代码 现在,我的日志看起来是这样的(如果您观察到,它在应用程序名称旁边没有2个逗号) 即使包括了Sleuth,我的
我正在尝试通过使用spring-cloud d-gcp-starter-log将SpringBootApplication(微服务)与StackdriverLogging集成。我能够在GCP中看到日志,但在日志中traceId和SPANId丢失。为此,我也尝试使用Spring-cloud d-sleuth,但由于我在我的微服务中使用apache kafka,因此侦探无法正常工作。有人能帮我吗我如何