4

I want to inject x-b3-traceid and x-b3-spanid in logs with pattern as shown-

property name="PATTERN" value="%h %l %u [%date{dd/MMM/yyyy:HH:mm:ss.SSS}] "%r" %s %b "%i{Referer}" "%i{User-Agent}" [trace=%responseHeader{X-B3-TraceId},span=%i{X-B3-SpanId}] %D"

For zipkins, there are libraries available like

brave-context-log4j2 – (https://github.com/openzipkin/brave/tree/master/context/log4j2)

Spring cloud sleuth. (https://cloud.spring.io/spring-cloud-sleuth/) How can I add that while using jaeger?

Shubham Goyal
  • 41
  • 1
  • 5

1 Answers1

2

The best way to move forward in order to use Jaegar is NOT TO USE JAEGAR CLIENT! Jaegar has the ability to collect Zipkin spans.

https://www.jaegertracing.io/docs/1.8/getting-started/#migrating-from-zipkin

You should take advantage of this and use the below Sleuth+Zipkin dependency and exclude Jaegar agent jars in your spring boot app.

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-sleuth-zipkin</artifactId>
    </dependency>

The above will send Zipkin spans to http://localhost:9411 by default. You can override this in your Spring Boot app to point to your Jaegar server easily by overriding the zipkin base URL.

spring.zipkin.base-url=http://your-jaegar-server:9411

Sleuth will do all the heavy lifting and the default logging will log the span and traceIds.

In the log4j2.xml file, all you have to mention is

[%X]

I'll be uploading a working example of this approach into my GitHub and sharing the link.

EDIT 1:

You can find the sample code here:

https://github.com/anoophp777/spring-webflux-jaegar-log4j2

dur
  • 15,689
  • 25
  • 79
  • 125
Anoop Hallimala
  • 625
  • 1
  • 11
  • 25