Spring boot 3 微米调度程序,具有多个记录 - 独特的新 Traceid

问题描述 投票:0回答:1

我有 spring boot3 应用程序并尝试将 Traceid 添加到日志中。我确实看到了踪迹。但是当调度程序作业运行时,会处理一堆记录。我需要为每条处理的记录添加新的 Traceid。现在,作为调度程序 cron 作业运行的一部分执行的所有记录都打印相同的 Traceid 和 spanid。

如何强制为每个已处理的记录添加新的traceid并将其传递到下游。基本上每条记录都有一个新的 Traceid。

对于每条记录 生成新的traceid 过程记录 }

2024-08-26T13:56:10.007-04:00信息24524 --- [调度-1] [66ccc1ba42497316fc03db0ec91b6667-fc03db0ec91b6667] d.u.e.c.b.m.c.c.t.s.CardTravelDocService:打印值0

2024-08-26T13:56:10.008-04:00信息24524 --- [调度-1] [66ccc1ba42497316fc03db0ec91b6667-fc03db0ec91b6667] d.u.e.c.b.m.c.c.t.s.CardTravelDocService:打印值1

我尝试过span.end();和 span.start().. 我们可以以编程方式使用 uuid 作为 Traceid 吗?这样可以确保每条记录都获得新的 Traceid

spring-boot logging unique trace implementation
1个回答
0
投票

我做了类似下面的事情..但我希望框架也为traceid提供范围。现在我正在构建 Traceid。

        UUID uuid = UUID.randomUUID();     
        
        TraceContext context = tracer.traceContextBuilder()
                    .traceId(uuid.toString().replaceAll("-", ""))
                     .spanId("00f067aa0ba902b7")
                    .sampled(true)
                    .build();

              
         Span  span2 = tracer.spanBuilder().setParent(context).start();
         
         tracer.withSpan(span2.start());
        
         log.info(" printing value {}", i); 
        
        transformationService.callTest(i); --> some method call
        
         span2.end();
© www.soinside.com 2019 - 2024. All rights reserved.