0

I have integrated OpenTelemetry in my application and after following this https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/logger-mdc-instrumentation.md, I am able to inject the trace_id and other info in logs through logging.pattern.level = trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p

But when tryinig to get these trace_id in my code through MDC.get("trace_id") I am gettting null.

This is my configuration.

plugins {
        id 'org.springframework.boot' version '2.7.0'
        id 'io.spring.dependency-management' version '1.0.11.RELEASE'
        id 'java'
        id 'jacoco'
        id "org.sonarqube" version "3.4.0.2513"
        id 'de.undercouch.download' version '4.1.1'
    }
    
    
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '17'
    
    configurations {
        compileOnly {
        extendsFrom annotationProcessor
        }
    }
    
    
    
    
    ext {
        fasterxmlJackson = '2.9.7';
    }
    
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-actuator'
        implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
        implementation 'org.springframework.boot:spring-boot-starter-jdbc'
        implementation 'org.springframework.boot:spring-boot-starter-security'
        implementation 'org.springframework.boot:spring-boot-starter-web'
        implementation('org.springframework.boot:spring-boot-starter-data-rest')
        compileOnly 'org.projectlombok:lombok'
        implementation 'org.postgresql:postgresql:42.4.0'
        implementation 'com.vladmihalcea:hibernate-types-55:2.16.2'
        annotationProcessor 'org.projectlombok:lombok'
        implementation('com.querydsl:querydsl-jpa:4.1.3')
        implementation('com.amazonaws:aws-java-sdk-s3:1.11.704')
        implementation('com.mashape.unirest:unirest-java:1.4.9')
        implementation('org.springframework.boot:spring-boot-starter-cache:2.7.1')
        implementation('org.springframework.boot:spring-boot-starter-data-redis:2.7.1')
    
        implementation("com.fasterxml.jackson.datatype:jackson-datatype-json-org:${fasterxmlJackson}",
                "com.fasterxml.jackson.datatype:jackson-datatype-joda:${fasterxmlJackson}",
                "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:${fasterxmlJackson}")
        implementation('org.apache.commons:commons-lang3:3.4')
        implementation('org.apache.commons:commons-collections4:4.3')
        implementation 'org.springdoc:springdoc-openapi-ui:1.6.14'
        implementation 'org.flywaydb:flyway-core'
        implementation(platform("io.opentelemetry:opentelemetry-bom:1.18.0"))
        implementation("io.opentelemetry:opentelemetry-api")
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
        testImplementation 'org.mockito:mockito-inline:4.6.1'
        testImplementation 'org.mockito:mockito-junit-jupiter:4.6.1'
    
    }
    configurations {
        compile.all*.exclude group: "org.apache.logging.log4j", module: "log4j-slf4j-impl"
        compile.all*.exclude group: "com.vaadin.external.google", module: "android-json"
        compile.all*.exclude group: "commons-logging", module: "commons-logging"
        all {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
       }
    }
    
    tasks.named('test') {
        useJUnitPlatform()
    }
    
    jacocoTestReport {
        reports {
        xml.enabled true
        html.enabled true
        }
    }
    bootJar {
        dependsOn("downloadAgent")
    }
    task downloadAgent(type: Download) {
        src "https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v1.17.0/opentelemetry-javaagent.jar"
        dest project.buildDir.toString() + "/otel/opentelemetry-javaagent.jar"
        overwrite true
    }

I need fetch trace_id in code so that I can use in non-logging usecases.

Pathum Bandara
  • 343
  • 2
  • 3
  • 12

0 Answers0