feat(components): mdc all headers/properties
diff --git a/components/camel-mdc/src/main/java/org/apache/camel/mdc/MDCService.java b/components/camel-mdc/src/main/java/org/apache/camel/mdc/MDCService.java
index eaf890f..bd38d6a 100644
--- a/components/camel-mdc/src/main/java/org/apache/camel/mdc/MDCService.java
+++ b/components/camel-mdc/src/main/java/org/apache/camel/mdc/MDCService.java
@@ -93,6 +93,12 @@
camelContext.getCamelContextExtension().addLogListener(new TracingLogListener());
}
+ @Override
+ protected void doStart() throws Exception {
+ super.doStart();
+ LOG.info("Mapped Diagnostic Context (MDC) enabled");
+ }
+
private final class TracingLogListener implements LogListener {
@Override
@@ -101,12 +107,18 @@
// Default values
prepareMDC(exchange);
if (getCustomHeaders() != null) {
- // User headers values
- userSelectedHeadersMDC(exchange);
+ if (getCustomHeaders().equals("*")){
+ allHeadersMDC(exchange);
+ } else {
+ userSelectedHeadersMDC(exchange);
+ }
}
if (getCustomProperties() != null) {
- // User headers values
- userSelectedPropertiesMDC(exchange);
+ if (getCustomProperties().equals("*")){
+ allPropertiesMDC(exchange);
+ } else {
+ userSelectedPropertiesMDC(exchange);
+ }
}
} catch (Exception t) {
// This exception is ignored
@@ -149,6 +161,14 @@
}
}
}
+ // Include all available headers
+ private void allHeadersMDC(Exchange exchange) {
+ for (String header : exchange.getIn().getHeaders().keySet()) {
+ if (exchange.getIn().getHeader(header) != null) {
+ MDC.put(header, exchange.getIn().getHeader(header, String.class));
+ }
+ }
+ }
// Include those properties selected by the user
private void userSelectedPropertiesMDC(Exchange exchange) {
@@ -158,6 +178,15 @@
}
}
}
+
+ // Include all available properties
+ private void allPropertiesMDC(Exchange exchange) {
+ for (String property : exchange.getAllProperties().keySet()) {
+ if (exchange.getProperty(property) != null) {
+ MDC.put(property, exchange.getProperty(property, String.class));
+ }
+ }
+ }
}
}