From 745dbdd6c4cb965d4a54178db9a73ec09078aa44 Mon Sep 17 00:00:00 2001 From: kaledOu Date: Tue, 19 Aug 2025 15:52:50 +0100 Subject: [PATCH 1/6] remove INFO: from log Signed-off-by: kaledOu --- .../MosipStageExecutorApplication.java | 147 +++++++++--------- .../src/main/resources/logback.xml | 25 ++- 2 files changed, 100 insertions(+), 72 deletions(-) diff --git a/registration-processor/mosip-stage-executor/src/main/java/io/mosip/registration/processor/stages/executor/MosipStageExecutorApplication.java b/registration-processor/mosip-stage-executor/src/main/java/io/mosip/registration/processor/stages/executor/MosipStageExecutorApplication.java index c762b100fab..b915fe8ba93 100644 --- a/registration-processor/mosip-stage-executor/src/main/java/io/mosip/registration/processor/stages/executor/MosipStageExecutorApplication.java +++ b/registration-processor/mosip-stage-executor/src/main/java/io/mosip/registration/processor/stages/executor/MosipStageExecutorApplication.java @@ -1,84 +1,91 @@ package io.mosip.registration.processor.stages.executor; +import io.mosip.kernel.core.exception.ExceptionUtils; +import io.mosip.kernel.core.logger.spi.Logger; +import io.mosip.registration.processor.core.abstractverticle.MosipVerticleAPIManager; +import io.mosip.registration.processor.core.logger.RegProcessorLogger; +import io.mosip.registration.processor.stages.executor.config.StagesConfig; +import io.mosip.registration.processor.stages.executor.util.StageClassesUtil; +import org.slf4j.bridge.SLF4JBridgeHandler; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.core.env.MutablePropertySources; + import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.logging.LogManager; import java.util.stream.Collectors; import java.util.stream.Stream; -import io.mosip.registration.processor.core.logger.RegProcessorLogger; -import io.mosip.kernel.core.logger.spi.Logger; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.core.env.MutablePropertySources; - -import io.mosip.kernel.core.exception.ExceptionUtils; -import io.mosip.registration.processor.core.abstractverticle.MosipVerticleAPIManager; - -import io.mosip.registration.processor.stages.executor.config.StagesConfig; -import io.mosip.registration.processor.stages.executor.util.StageClassesUtil; - /** * The Class MosipStageExecutorApplication. */ public class MosipStageExecutorApplication { - - /** The Constant regProcLogger. */ - private static final Logger regProcLogger = RegProcessorLogger.getLogger(MosipStageExecutorApplication.class); - /** - * main method to launch external stage application. - * - * @param args the arguments - */ - public static void main(String[] args) { - regProcLogger.info("Starting mosip-stage-executor..."); - //This context is closed after deploying the stages - try (AnnotationConfigApplicationContext stageInfoApplicationContext = new AnnotationConfigApplicationContext( - new Class[] { StagesConfig.class });) { - StagesConfig stagesConfig = stageInfoApplicationContext.getBean(StagesConfig.class); - MutablePropertySources propertySources = stagesConfig.getCloudPropertySources(); - - List stageBeansBasePackages = StageClassesUtil.getStageBeansBasePackages(stagesConfig, propertySources); - - if(!stageBeansBasePackages.isEmpty()) { - - regProcLogger.info("Base packages for stage beans from configuration: {}", stageBeansBasePackages); - - List> stageClasses = StageClassesUtil.getStageBeanClasses(stageBeansBasePackages); - - regProcLogger.info("Stage classes identified: {}", stageClasses.stream().map(Class::getCanonicalName).collect(Collectors.joining(", "))); - - Class[] entrypointConfigClasses = Stream.concat(Stream.of(StagesConfig.class), stageClasses.stream()) - .toArray(size -> new Class[size]); - - //This context should not be closed and to be kept for consumption by the verticles - AnnotationConfigApplicationContext mainApplicationContext = new PropertySourcesCustomizingApplicationContext( - entrypointConfigClasses) { - @Override - public MutablePropertySources getPropertySources() { - return propertySources; - }; - }; - - if (!stageClasses.isEmpty()) { - ExecutorService executorService = Executors.newFixedThreadPool(stageClasses.size()); - stageClasses.forEach(stageClass -> executorService.execute(() -> { - try { - regProcLogger.info("Executing Stage: {}", stageClass.getCanonicalName()); - MosipVerticleAPIManager stageBean = StageClassesUtil.getStageBean(mainApplicationContext, stageClass); - stageBean.deployVerticle(); - } catch (Exception e) { - regProcLogger.error("Exception occured while loading verticles. Please make sure correct verticle name was passed from deployment script. \n {}", - ExceptionUtils.getStackTrace(e)); - } - })); - executorService.close(); - } else { - regProcLogger.error("No stage class is found. Please make sure correct correct stage class base packages are specified in properties and stages are added to classpath/dependencies."); - } - } else { - regProcLogger.error("No base packages configured for stages."); - } - } - } + /** + * The Constant regProcLogger. + */ + private static final Logger regProcLogger = RegProcessorLogger.getLogger(MosipStageExecutorApplication.class); + + /** + * main method to launch external stage application. + * + * @param args the arguments + */ + public static void main(String[] args) { + LogManager.getLogManager().reset(); + SLF4JBridgeHandler.removeHandlersForRootLogger(); + SLF4JBridgeHandler.install(); + regProcLogger.info("Starting mosip-stage-executor..."); + //This context is closed after deploying the stages + try (AnnotationConfigApplicationContext stageInfoApplicationContext = new AnnotationConfigApplicationContext( + new Class[]{StagesConfig.class});) { + StagesConfig stagesConfig = stageInfoApplicationContext.getBean(StagesConfig.class); + MutablePropertySources propertySources = stagesConfig.getCloudPropertySources(); + + List stageBeansBasePackages = StageClassesUtil.getStageBeansBasePackages(stagesConfig, propertySources); + + if (!stageBeansBasePackages.isEmpty()) { + + regProcLogger.info("Base packages for stage beans from configuration: {}", stageBeansBasePackages); + + List> stageClasses = StageClassesUtil.getStageBeanClasses(stageBeansBasePackages); + + regProcLogger.info("Stage classes identified: {}", stageClasses.stream().map(Class::getCanonicalName).collect(Collectors.joining(", "))); + + Class[] entrypointConfigClasses = Stream.concat(Stream.of(StagesConfig.class), stageClasses.stream()) + .toArray(size -> new Class[size]); + + //This context should not be closed and to be kept for consumption by the verticles + AnnotationConfigApplicationContext mainApplicationContext = new PropertySourcesCustomizingApplicationContext( + entrypointConfigClasses) { + @Override + public MutablePropertySources getPropertySources() { + return propertySources; + } + + ; + }; + + if (!stageClasses.isEmpty()) { + ExecutorService executorService = Executors.newFixedThreadPool(stageClasses.size()); + stageClasses.forEach(stageClass -> executorService.execute(() -> { + try { + regProcLogger.info("Executing Stage: {}", stageClass.getCanonicalName()); + MosipVerticleAPIManager stageBean = StageClassesUtil.getStageBean(mainApplicationContext, stageClass); + stageBean.deployVerticle(); + } catch (Exception e) { + regProcLogger.error("Exception occured while loading verticles. Please make sure correct verticle name was passed from deployment script. \n {}", + ExceptionUtils.getStackTrace(e)); + } + })); + executorService.close(); + } else { + regProcLogger.error("No stage class is found. Please make sure correct correct stage class base packages are specified in properties and stages are added to classpath/dependencies."); + } + } else { + regProcLogger.error("No base packages configured for stages."); + } + } + } } diff --git a/registration-processor/mosip-stage-executor/src/main/resources/logback.xml b/registration-processor/mosip-stage-executor/src/main/resources/logback.xml index c9058695db6..4113e10e911 100644 --- a/registration-processor/mosip-stage-executor/src/main/resources/logback.xml +++ b/registration-processor/mosip-stage-executor/src/main/resources/logback.xml @@ -1,10 +1,31 @@ + + - + + traceId + spanId + parentId + + + + + %msg%n + + + + + + + + + + + - + \ No newline at end of file From 3de2d18cd138210c43aa2e681fc8effde35e015f Mon Sep 17 00:00:00 2001 From: kaledOu Date: Mon, 1 Sep 2025 13:13:30 +0100 Subject: [PATCH 2/6] remove changes from logbak.xml Signed-off-by: kaledOu --- .../src/main/resources/logback.xml | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/registration-processor/mosip-stage-executor/src/main/resources/logback.xml b/registration-processor/mosip-stage-executor/src/main/resources/logback.xml index 4113e10e911..8972c8e3fa3 100644 --- a/registration-processor/mosip-stage-executor/src/main/resources/logback.xml +++ b/registration-processor/mosip-stage-executor/src/main/resources/logback.xml @@ -1,30 +1,9 @@ - - - - traceId - spanId - parentId - + - - - - %msg%n - - - - - - - - - - - From 9a9ffa64037863ad652d55342c71c65f27abc711 Mon Sep 17 00:00:00 2001 From: kaledOu Date: Mon, 1 Sep 2025 14:46:40 +0100 Subject: [PATCH 3/6] add mdsKey Signed-off-by: kaledOu --- .../mosip-stage-executor/src/main/resources/logback.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/registration-processor/mosip-stage-executor/src/main/resources/logback.xml b/registration-processor/mosip-stage-executor/src/main/resources/logback.xml index 8972c8e3fa3..a24737504ca 100644 --- a/registration-processor/mosip-stage-executor/src/main/resources/logback.xml +++ b/registration-processor/mosip-stage-executor/src/main/resources/logback.xml @@ -1,9 +1,12 @@ - + + traceId + spanId + parentId + - From de01889328391607e630c1bb089ca30f45760c6b Mon Sep 17 00:00:00 2001 From: kaledOu Date: Tue, 2 Sep 2025 12:55:16 +0100 Subject: [PATCH 4/6] change in EventTracingHandler Signed-off-by: kaledOu --- .../core/tracing/EventTracingHandler.java | 61 +++++++++++-------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/EventTracingHandler.java b/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/EventTracingHandler.java index 7b8bb228786..3ffa0d4e3fb 100644 --- a/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/EventTracingHandler.java +++ b/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/EventTracingHandler.java @@ -1,11 +1,5 @@ package io.mosip.registration.processor.core.tracing; -import java.nio.charset.StandardCharsets; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import brave.Span; import brave.Tracer; import brave.Tracing; @@ -18,12 +12,19 @@ import io.vertx.kafka.client.consumer.KafkaConsumerRecord; import io.vertx.kafka.client.producer.KafkaHeader; import io.vertx.kafka.client.producer.KafkaProducerRecord; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Handler to trace events, * currently methods are written to handle vertx eventbus and kafka * Note: For events, We use single line b3 header - * -- + * -- */ public class EventTracingHandler { @@ -49,6 +50,7 @@ public EventTracingHandler(Tracing tracing, String eventBusType) { /** * creates TraceContext based on the provided eventbus Message, * creates new traceContext if b3 headers are not found else starts the span with existing span + * * @param carrier * @return */ @@ -64,6 +66,7 @@ private Span nextSpan(Message carrier) { /** * creates TraceContext based on the provided Kafka Header, * creates new traceContext if b3 headers are not found else starts the span with existing span + * * @param carrier * @return */ @@ -97,8 +100,8 @@ public String toString() { public String get(List headers, String key) { String value = null; for (KafkaHeader header : headers) { - if(key.equalsIgnoreCase(header.key())) - value= header.value().toString(StandardCharsets.UTF_8); + if (key.equalsIgnoreCase(header.key())) + value = header.value().toString(StandardCharsets.UTF_8); } return value; } @@ -112,8 +115,10 @@ public void readHeaderOnConsume(EventBus eventBus) { eventBus.addInboundInterceptor(deliveryContext -> { Span span = nextSpan(deliveryContext.message()); JsonObject body = new JsonObject((String) deliveryContext.message().body()); - initializeContextWithTracing(span, body == null ? "-" : (body.getString("rid", "-"))); + String rid = body == null ? "-" : body.getString("rid", "-"); + initializeContextWithTracing(span, rid); MDCHelper.addHeadersToMDC(); + logSpanStructured(span, rid); deliveryContext.next(); }); } @@ -121,8 +126,8 @@ public void readHeaderOnConsume(EventBus eventBus) { public void writeHeaderOnProduce(EventBus eventBus) { eventBus.addOutboundInterceptor(deliveryContext -> { Object tracer = ContextualData.getOrDefault(TracingConstant.TRACER); - Span span = (tracer instanceof TracingHandler) ? ((TracingHandler)tracer).span : (Span)tracer; - if(span == null) { + Span span = (tracer instanceof TracingHandler) ? ((TracingHandler) tracer).span : (Span) tracer; + if (span == null) { span = nextSpan(deliveryContext.message()); JsonObject body = new JsonObject((String) deliveryContext.message().body()); initializeContextWithTracing(span, body == null ? "-" : (body.getString("rid", "-"))); @@ -146,29 +151,29 @@ public Span readHeaderOnKafkaConsume(KafkaConsumerRecord consume public void writeHeaderOnKafkaProduce(KafkaProducerRecord producerRecord) { Object tracer = ContextualData.getOrDefault(TracingConstant.TRACER); - Span span = (tracer instanceof TracingHandler) ? ((TracingHandler)tracer).span : (Span)tracer; - if(span == null) { + Span span = (tracer instanceof TracingHandler) ? ((TracingHandler) tracer).span : (Span) tracer; + if (span == null) { span = nextSpan(producerRecord.headers()); initializeContextWithTracing(span, producerRecord.key()); MDCHelper.addHeadersToMDC(); } producerRecord.addHeader(TracingConstant.SINGLE_LINE_B3_HEADER, String.format("%s-%s", span.context().traceIdString(), - span.context().spanIdString())); + span.context().spanIdString())); producerRecord.addHeader(TracingConstant.RID_KEY, producerRecord.key()); } public void writeHeaderOnKafkaProduce(KafkaProducerRecord producerRecord, Span span) { - producerRecord.addHeader(TracingConstant.SINGLE_LINE_B3_HEADER, + producerRecord.addHeader(TracingConstant.SINGLE_LINE_B3_HEADER, String.format("%s-%s", span.context().traceIdString(), span.context().spanIdString())); - producerRecord.addHeader(TracingConstant.RID_KEY, producerRecord.key()); + producerRecord.addHeader(TracingConstant.RID_KEY, producerRecord.key()); } public void closeSpan() { Object tracer = ContextualData.getOrDefault(TracingConstant.TRACER); - if(tracer instanceof Span) { - ((Span)tracer).finish(System.currentTimeMillis()); + if (tracer instanceof Span) { + ((Span) tracer).finish(System.currentTimeMillis()); } } @@ -180,12 +185,20 @@ public void closeSpan(Span span) { private void initializeContextWithTracing(Span span, String rid) { ContextualData.put(TracingConstant.TRACER, span); ContextualData.put(TracingConstant.TRACE_ID_KEY, span.context().traceIdString()); - if (rid == null) { - ContextualData.put(TracingConstant.RID_KEY, "-"); - } else { - ContextualData.put(TracingConstant.RID_KEY, rid); - } + if (rid == null) { + ContextualData.put(TracingConstant.RID_KEY, "-"); + } else { + ContextualData.put(TracingConstant.RID_KEY, rid); + } + + } + private void logSpanStructured(Span span, String rid) { + Map spanMap = new HashMap<>(); + spanMap.put("traceId", span.context().traceIdString()); + spanMap.put("spanId", span.context().spanIdString()); + spanMap.put("rid", rid); + logger.info("{}", spanMap); // LogstashEncoder will serialize this as real JSON } } From 282b6f7a03c9c7e3d8d0fd30807677863be60ba5 Mon Sep 17 00:00:00 2001 From: kaledOu Date: Tue, 2 Sep 2025 14:26:23 +0100 Subject: [PATCH 5/6] change in TracingRoutingContextHandlerLocal revert EventTracingHandler Signed-off-by: kaledOu --- .../core/tracing/EventTracingHandler.java | 14 +------- .../TracingRoutingContextHandlerLocal.java | 36 ++++++++++++++----- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/EventTracingHandler.java b/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/EventTracingHandler.java index 3ffa0d4e3fb..51643314d19 100644 --- a/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/EventTracingHandler.java +++ b/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/EventTracingHandler.java @@ -16,9 +16,7 @@ import org.slf4j.LoggerFactory; import java.nio.charset.StandardCharsets; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * Handler to trace events, @@ -115,10 +113,8 @@ public void readHeaderOnConsume(EventBus eventBus) { eventBus.addInboundInterceptor(deliveryContext -> { Span span = nextSpan(deliveryContext.message()); JsonObject body = new JsonObject((String) deliveryContext.message().body()); - String rid = body == null ? "-" : body.getString("rid", "-"); - initializeContextWithTracing(span, rid); + initializeContextWithTracing(span, body == null ? "-" : (body.getString("rid", "-"))); MDCHelper.addHeadersToMDC(); - logSpanStructured(span, rid); deliveryContext.next(); }); } @@ -193,12 +189,4 @@ private void initializeContextWithTracing(Span span, String rid) { } - private void logSpanStructured(Span span, String rid) { - Map spanMap = new HashMap<>(); - spanMap.put("traceId", span.context().traceIdString()); - spanMap.put("spanId", span.context().spanIdString()); - spanMap.put("rid", rid); - logger.info("{}", spanMap); // LogstashEncoder will serialize this as real JSON - } - } diff --git a/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/TracingRoutingContextHandlerLocal.java b/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/TracingRoutingContextHandlerLocal.java index 56fc691fa72..c9fb11416de 100644 --- a/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/TracingRoutingContextHandlerLocal.java +++ b/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/TracingRoutingContextHandlerLocal.java @@ -15,6 +15,9 @@ import io.vertx.core.http.HttpServerResponse; import io.vertx.ext.web.RoutingContext; +import java.util.HashMap; +import java.util.Map; + /** * This is the copy from brave instrumentation * In this local implementation, we have added Tracer and TraceId into ContextInternal @@ -22,7 +25,7 @@ */ final class TracingRoutingContextHandlerLocal implements Handler { - private static Logger regProcLogger = RegProcessorLogger.getLogger(TracingRoutingContextHandlerLocal.class); + private static Logger regProcLogger = RegProcessorLogger.getLogger(TracingRoutingContextHandlerLocal.class); static final Propagation.Getter GETTER = new Propagation.Getter() { public String get(HttpServerRequest carrier, String key) { return carrier.getHeader(key); @@ -46,7 +49,7 @@ public String toString() { } public void handle(RoutingContext context) { - TracingHandler tracingHandler = (TracingHandler)context.get(TracingHandler.class.getName()); + TracingHandler tracingHandler = (TracingHandler) context.get(TracingHandler.class.getName()); if (tracingHandler != null) { if (!context.failed()) context.addHeadersEndHandler(tracingHandler); @@ -58,6 +61,7 @@ public void handle(RoutingContext context) { context.put(TracingHandler.class.getName(), handler); ContextualData.put(TracingConstant.TRACER, handler); ContextualData.put(TracingConstant.TRACE_ID_KEY, handler.span.context().traceIdString()); + logSpanStructured(span, context); context.addHeadersEndHandler(handler); Tracer.SpanInScope ws = this.tracer.withSpanInScope(span); try { @@ -65,19 +69,35 @@ public void handle(RoutingContext context) { if (ws != null) ws.close(); } catch (Throwable throwable) { - regProcLogger.error(LoggerFileConstant.SESSIONID.toString(), - LoggerFileConstant.REGISTRATIONID.toString(), "", - throwable.getMessage() + ExceptionUtils.getStackTrace(throwable)); + regProcLogger.error(LoggerFileConstant.SESSIONID.toString(), + LoggerFileConstant.REGISTRATIONID.toString(), "", + throwable.getMessage() + ExceptionUtils.getStackTrace(throwable)); if (ws != null) try { ws.close(); } catch (Throwable throwable1) { - regProcLogger.error(LoggerFileConstant.SESSIONID.toString(), - LoggerFileConstant.REGISTRATIONID.toString(), "", - throwable1.getMessage() + ExceptionUtils.getStackTrace(throwable1)); + regProcLogger.error(LoggerFileConstant.SESSIONID.toString(), + LoggerFileConstant.REGISTRATIONID.toString(), "", + throwable1.getMessage() + ExceptionUtils.getStackTrace(throwable1)); throwable.addSuppressed(throwable1); } throw throwable; } } + + private void logSpanStructured(Span span, RoutingContext context) { + Map spanMap = new HashMap<>(); + spanMap.put("traceId", span.context().traceIdString()); + spanMap.put("spanId", span.context().spanIdString()); + spanMap.put("parentId", span.context().parentIdString() != null ? span.context().parentIdString() : "-"); + spanMap.put("path", context.normalisedPath()); + spanMap.put("method", context.request().method().name()); + + // Optional: include HTTP status if already available + if (context.response().ended()) { + spanMap.put("statusCode", context.response().getStatusCode()); + } + + regProcLogger.info("{}", spanMap); // LogstashEncoder will output structured JSON + } } From d58faa3c5621d7161d2f9fa857092a6cbc4f3657 Mon Sep 17 00:00:00 2001 From: kaledOu Date: Tue, 2 Sep 2025 16:44:11 +0100 Subject: [PATCH 6/6] revert TracingRoutingContextHandlerLocal & change logback Signed-off-by: kaledOu --- .../src/main/resources/logback.xml | 7 ++----- .../TracingRoutingContextHandlerLocal.java | 20 ------------------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/registration-processor/mosip-stage-executor/src/main/resources/logback.xml b/registration-processor/mosip-stage-executor/src/main/resources/logback.xml index a24737504ca..86353b17e78 100644 --- a/registration-processor/mosip-stage-executor/src/main/resources/logback.xml +++ b/registration-processor/mosip-stage-executor/src/main/resources/logback.xml @@ -1,11 +1,8 @@ - - traceId - spanId - parentId - + + diff --git a/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/TracingRoutingContextHandlerLocal.java b/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/TracingRoutingContextHandlerLocal.java index c9fb11416de..8f3ba1a3502 100644 --- a/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/TracingRoutingContextHandlerLocal.java +++ b/registration-processor/registration-processor-core/src/main/java/io/mosip/registration/processor/core/tracing/TracingRoutingContextHandlerLocal.java @@ -15,9 +15,6 @@ import io.vertx.core.http.HttpServerResponse; import io.vertx.ext.web.RoutingContext; -import java.util.HashMap; -import java.util.Map; - /** * This is the copy from brave instrumentation * In this local implementation, we have added Tracer and TraceId into ContextInternal @@ -61,7 +58,6 @@ public void handle(RoutingContext context) { context.put(TracingHandler.class.getName(), handler); ContextualData.put(TracingConstant.TRACER, handler); ContextualData.put(TracingConstant.TRACE_ID_KEY, handler.span.context().traceIdString()); - logSpanStructured(span, context); context.addHeadersEndHandler(handler); Tracer.SpanInScope ws = this.tracer.withSpanInScope(span); try { @@ -84,20 +80,4 @@ public void handle(RoutingContext context) { throw throwable; } } - - private void logSpanStructured(Span span, RoutingContext context) { - Map spanMap = new HashMap<>(); - spanMap.put("traceId", span.context().traceIdString()); - spanMap.put("spanId", span.context().spanIdString()); - spanMap.put("parentId", span.context().parentIdString() != null ? span.context().parentIdString() : "-"); - spanMap.put("path", context.normalisedPath()); - spanMap.put("method", context.request().method().name()); - - // Optional: include HTTP status if already available - if (context.response().ended()) { - spanMap.put("statusCode", context.response().getStatusCode()); - } - - regProcLogger.info("{}", spanMap); // LogstashEncoder will output structured JSON - } }