You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/01/09 09:32:50 UTC

[camel] branch main updated: CAMEL-17258 - added support for changing length of tracing groups

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 3af40ea  CAMEL-17258 - added support for changing length of tracing groups
3af40ea is described below

commit 3af40ea87ebf9a343538149e2652cb0a8bddcbf6
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Jan 9 10:30:10 2022 +0100

    CAMEL-17258 - added support for changing length of tracing groups
---
 .../camel/cdi/xml/CamelContextFactoryBean.java     | 12 +++++++++++
 .../org/apache/camel/spring/xml/camelContext.json  |  1 +
 .../camel/spring/xml/CamelContextFactoryBean.java  | 16 ++++++++++++++
 .../main/java/org/apache/camel/CamelContext.java   | 16 ++++++++++++++
 .../camel/impl/engine/AbstractCamelContext.java    | 11 ++++++++++
 .../apache/camel/impl/engine/DefaultTracer.java    | 14 +++++++-----
 .../camel/impl/ExtendedCamelContextConfigurer.java |  6 ++++++
 .../camel/impl/lw/LightweightCamelContext.java     | 10 +++++++++
 .../impl/lw/LightweightRuntimeCamelContext.java    | 10 +++++++++
 .../core/xml/AbstractCamelContextFactoryBean.java  |  5 +++++
 .../MainConfigurationPropertiesConfigurer.java     |  6 ++++++
 .../camel-main-configuration-metadata.json         |  1 +
 core/camel-main/src/main/docs/main.adoc            |  3 ++-
 .../camel/main/DefaultConfigurationConfigurer.java |  1 +
 .../camel/main/DefaultConfigurationProperties.java | 25 ++++++++++++++++++++++
 15 files changed, 131 insertions(+), 6 deletions(-)

diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/CamelContextFactoryBean.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/CamelContextFactoryBean.java
index bf00408..20c3745 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/CamelContextFactoryBean.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/CamelContextFactoryBean.java
@@ -95,6 +95,9 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Def
     private String tracePattern;
 
     @XmlAttribute
+    private String traceLoggingFormat;
+
+    @XmlAttribute
     private String debug;
 
     @XmlAttribute
@@ -713,6 +716,15 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Def
     }
 
     @Override
+    public String getTraceLoggingFormat() {
+        return traceLoggingFormat;
+    }
+
+    public void setTraceLoggingFormat(String traceLoggingFormat) {
+        this.traceLoggingFormat = traceLoggingFormat;
+    }
+
+    @Override
     public String getDebug() {
         return debug;
     }
diff --git a/components/camel-spring-xml/src/generated/resources/org/apache/camel/spring/xml/camelContext.json b/components/camel-spring-xml/src/generated/resources/org/apache/camel/spring/xml/camelContext.json
index a97c077..a53b993 100644
--- a/components/camel-spring-xml/src/generated/resources/org/apache/camel/spring/xml/camelContext.json
+++ b/components/camel-spring-xml/src/generated/resources/org/apache/camel/spring/xml/camelContext.json
@@ -17,6 +17,7 @@
     "trace": { "kind": "attribute", "displayName": "Trace", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets whether tracing is enabled or not. To use tracing then this must be enabled on startup to be installed in the CamelContext." },
     "backlogTrace": { "kind": "attribute", "displayName": "Backlog Trace", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets whether backlog tracing is enabled or not. To use backlog tracing then this must be enabled on startup to be installed in the CamelContext." },
     "tracePattern": { "kind": "attribute", "displayName": "Trace Pattern", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Tracing pattern to match which node EIPs to trace. For example to match all To EIP nodes, use to. The pattern matches by node and route id's Multiple patterns can be separated by comma." },
+    "traceLoggingFormat": { "kind": "attribute", "displayName": "Trace Logging Format", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom tracing logging format. The default format (arrow, routeId, label) is: %-4.4s %-12.12s %-33.33s" },
     "debug": { "kind": "attribute", "displayName": "Debug", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets whether debugging is enabled or not. To use debugging then this must be enabled on startup to be installed in the CamelContext." },
     "messageHistory": { "kind": "attribute", "displayName": "Message History", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "description": "Sets whether message history is enabled or not." },
     "sourceLocationEnabled": { "kind": "attribute", "displayName": "Source Location Enabled", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "description": "Whether to capture precise source location:line-number for all EIPs in Camel routes. Enabling this will impact parsing Java based routes (also Groovy, Kotlin, etc.) on startup as this uses JDK StackTraceElement to calculate the lo [...]
diff --git a/components/camel-spring-xml/src/main/java/org/apache/camel/spring/xml/CamelContextFactoryBean.java b/components/camel-spring-xml/src/main/java/org/apache/camel/spring/xml/CamelContextFactoryBean.java
index 7b23921..a1e6acf 100644
--- a/components/camel-spring-xml/src/main/java/org/apache/camel/spring/xml/CamelContextFactoryBean.java
+++ b/components/camel-spring-xml/src/main/java/org/apache/camel/spring/xml/CamelContextFactoryBean.java
@@ -118,6 +118,8 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Spr
     @XmlAttribute
     private String tracePattern;
     @XmlAttribute
+    private String traceLoggingFormat;
+    @XmlAttribute
     private String debug;
     @XmlAttribute
     @Metadata(defaultValue = "false")
@@ -849,6 +851,20 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Spr
     }
 
     @Override
+    public String getTraceLoggingFormat() {
+        return traceLoggingFormat;
+    }
+
+    /**
+     * To use a custom tracing logging format.
+     *
+     * The default format (arrow, routeId, label) is: %-4.4s [%-12.12s] [%-33.33s]
+     */
+    public void setTraceLoggingFormat(String traceLoggingFormat) {
+        this.traceLoggingFormat = traceLoggingFormat;
+    }
+
+    @Override
     public String getMessageHistory() {
         return messageHistory;
     }
diff --git a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
index 72f7210..08abbe7 100644
--- a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
@@ -1278,6 +1278,22 @@ public interface CamelContext extends CamelContextLifecycle, RuntimeConfiguratio
     void setMDCLoggingKeysPattern(String pattern);
 
     /**
+     * To use a custom tracing logging format.
+     *
+     * The default format (arrow, routeId, label) is: %-4.4s [%-12.12s] [%-33.33s]
+     */
+    String getTracingLoggingFormat();
+
+    /**
+     * To use a custom tracing logging format.
+     *
+     * The default format (arrow, routeId, label) is: %-4.4s [%-12.12s] [%-33.33s]
+     *
+     * @param format the logging format
+     */
+    void setTracingLoggingFormat(String format);
+
+    /**
      * If dumping is enabled then Camel will during startup dump all loaded routes (incl rests and route templates)
      * represented as XML DSL into the log. This is intended for trouble shooting or to assist during development.
      *
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 30e7215..358d669 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -253,6 +253,7 @@ public abstract class AbstractCamelContext extends BaseService
     private Boolean trace = Boolean.FALSE;
     private Boolean traceStandby = Boolean.FALSE;
     private String tracePattern;
+    private String tracingLoggingFormat;
     private Boolean debug = Boolean.FALSE;
     private Boolean messageHistory = Boolean.FALSE;
     private Boolean logMask = Boolean.FALSE;
@@ -2207,6 +2208,16 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     @Override
+    public String getTracingLoggingFormat() {
+        return tracingLoggingFormat;
+    }
+
+    @Override
+    public void setTracingLoggingFormat(String format) {
+        this.tracingLoggingFormat = format;
+    }
+
+    @Override
     public Boolean isBacklogTracing() {
         return backlogTrace;
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTracer.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTracer.java
index e9837da..4bedbd9 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTracer.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTracer.java
@@ -46,8 +46,10 @@ public class DefaultTracer extends ServiceSupport implements CamelContextAware,
 
     private static final String TRACING_OUTPUT = "%-4.4s [%-12.12s] [%-33.33s]";
 
-    // use a fixed logger name so its easy to spot
+    // use a fixed logger name so easy to spot
     private static final Logger LOG = LoggerFactory.getLogger("org.apache.camel.Tracing");
+
+    private String tracingFormat = TRACING_OUTPUT;
     private CamelContext camelContext;
     private boolean enabled = true;
     private boolean standby;
@@ -91,7 +93,7 @@ public class DefaultTracer extends ServiceSupport implements CamelContextAware,
             String label = URISupport.sanitizeUri(StringHelper.limitLength(node.getLabel(), 50));
 
             StringBuilder sb = new StringBuilder();
-            sb.append(String.format(TRACING_OUTPUT, "   ", routeId, label));
+            sb.append(String.format(tracingFormat, "   ", routeId, label));
             sb.append(" ");
             String data = exchangeFormatter.format(exchange);
             sb.append(data);
@@ -129,7 +131,7 @@ public class DefaultTracer extends ServiceSupport implements CamelContextAware,
         }
 
         StringBuilder sb = new StringBuilder();
-        sb.append(String.format(TRACING_OUTPUT, arrow, route.getRouteId(), label));
+        sb.append(String.format(tracingFormat, arrow, route.getRouteId(), label));
         sb.append(" ");
         String data = exchangeFormatter.format(exchange);
         sb.append(data);
@@ -160,7 +162,7 @@ public class DefaultTracer extends ServiceSupport implements CamelContextAware,
         String arrow = original ? "*<--" : "<---";
 
         StringBuilder sb = new StringBuilder();
-        sb.append(String.format(TRACING_OUTPUT, arrow, route.getRouteId(), label));
+        sb.append(String.format(tracingFormat, arrow, route.getRouteId(), label));
         sb.append(" ");
         String data = exchangeFormatter.format(exchange);
         sb.append(data);
@@ -283,7 +285,9 @@ public class DefaultTracer extends ServiceSupport implements CamelContextAware,
 
     @Override
     protected void doStart() throws Exception {
-        // noop
+        if (getCamelContext().getTracingLoggingFormat() != null) {
+            tracingFormat = getCamelContext().getTracingLoggingFormat();
+        }
     }
 
     @Override
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
index a6e90dd..fd7d7fc 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
@@ -177,6 +177,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "Tracer": target.setTracer(property(camelContext, org.apache.camel.spi.Tracer.class, value)); return true;
         case "tracing":
         case "Tracing": target.setTracing(property(camelContext, java.lang.Boolean.class, value)); return true;
+        case "tracingloggingformat":
+        case "TracingLoggingFormat": target.setTracingLoggingFormat(property(camelContext, java.lang.String.class, value)); return true;
         case "tracingpattern":
         case "TracingPattern": target.setTracingPattern(property(camelContext, java.lang.String.class, value)); return true;
         case "tracingstandby":
@@ -362,6 +364,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "Tracer": return org.apache.camel.spi.Tracer.class;
         case "tracing":
         case "Tracing": return java.lang.Boolean.class;
+        case "tracingloggingformat":
+        case "TracingLoggingFormat": return java.lang.String.class;
         case "tracingpattern":
         case "TracingPattern": return java.lang.String.class;
         case "tracingstandby":
@@ -548,6 +552,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "Tracer": return target.getTracer();
         case "tracing":
         case "Tracing": return target.isTracing();
+        case "tracingloggingformat":
+        case "TracingLoggingFormat": return target.getTracingLoggingFormat();
         case "tracingpattern":
         case "TracingPattern": return target.getTracingPattern();
         case "tracingstandby":
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
index 7d61d65..ac4d26f 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
@@ -1030,6 +1030,16 @@ public class LightweightCamelContext implements ExtendedCamelContext, CatalogCam
     }
 
     @Override
+    public String getTracingLoggingFormat() {
+        return delegate.getTracingLoggingFormat();
+    }
+
+    @Override
+    public void setTracingLoggingFormat(String format) {
+        delegate.setTracingLoggingFormat(format);
+    }
+
+    @Override
     public void setBacklogTracing(Boolean backlogTrace) {
         delegate.setBacklogTracing(backlogTrace);
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
index 04726e4..ad67ebc 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
@@ -397,6 +397,16 @@ public class LightweightRuntimeCamelContext implements ExtendedCamelContext, Cat
     }
 
     @Override
+    public String getTracingLoggingFormat() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setTracingLoggingFormat(String format) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
     public Boolean isBacklogTracing() {
         throw new UnsupportedOperationException();
     }
diff --git a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index 47652f4..998ad6b 100644
--- a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -970,6 +970,8 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
 
     public abstract String getTracePattern();
 
+    public abstract String getTraceLoggingFormat();
+
     public abstract String getBacklogTrace();
 
     public abstract String getDebug();
@@ -1113,6 +1115,9 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         if (getTracePattern() != null) {
             context.setTracingPattern(CamelContextHelper.parseText(context, getTracePattern()));
         }
+        if (getTraceLoggingFormat() != null) {
+            context.setTracingLoggingFormat(CamelContextHelper.parseText(context, getTraceLoggingFormat()));
+        }
         if (getBacklogTrace() != null) {
             context.setBacklogTracing(CamelContextHelper.parseBoolean(context, getBacklogTrace()));
         }
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java
index 76e1a7c..dc4b742 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java
@@ -219,6 +219,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "ThreadNamePattern": target.setThreadNamePattern(property(camelContext, java.lang.String.class, value)); return true;
         case "tracing":
         case "Tracing": target.setTracing(property(camelContext, boolean.class, value)); return true;
+        case "tracingloggingformat":
+        case "TracingLoggingFormat": target.setTracingLoggingFormat(property(camelContext, java.lang.String.class, value)); return true;
         case "tracingpattern":
         case "TracingPattern": target.setTracingPattern(property(camelContext, java.lang.String.class, value)); return true;
         case "tracingstandby":
@@ -436,6 +438,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "ThreadNamePattern": return java.lang.String.class;
         case "tracing":
         case "Tracing": return boolean.class;
+        case "tracingloggingformat":
+        case "TracingLoggingFormat": return java.lang.String.class;
         case "tracingpattern":
         case "TracingPattern": return java.lang.String.class;
         case "tracingstandby":
@@ -654,6 +658,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "ThreadNamePattern": return target.getThreadNamePattern();
         case "tracing":
         case "Tracing": return target.isTracing();
+        case "tracingloggingformat":
+        case "TracingLoggingFormat": return target.getTracingLoggingFormat();
         case "tracingpattern":
         case "TracingPattern": return target.getTracingPattern();
         case "tracingstandby":
diff --git a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
index 668fe14..ea0b01f 100644
--- a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
+++ b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
@@ -109,6 +109,7 @@
     { "name": "camel.main.streamCachingStatisticsEnabled", "description": "Sets whether stream caching statistics is enabled.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
     { "name": "camel.main.threadNamePattern", "description": "Sets the thread name pattern used for creating the full thread name. The default pattern is: Camel (#camelId#) thread ##counter# - #name# Where #camelId# is the name of the CamelContext. and #counter# is a unique incrementing counter. and #name# is the regular thread name. You can also use #longName# which is the long thread name which can includes endpoint parameters etc.", "sourceType": "org.apache.camel.main.DefaultConfigur [...]
     { "name": "camel.main.tracing", "description": "Sets whether tracing is enabled or not. Default is false.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
+    { "name": "camel.main.tracingLoggingFormat", "description": "To use a custom tracing logging format. The default format (arrow, routeId, label) is: %-4.4s %-12.12s %-33.33s", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "string", "javaType": "java.lang.String", "defaultValue": "%-4.4s [%-12.12s] [%-33.33s]" },
     { "name": "camel.main.tracingPattern", "description": "Tracing pattern to match which node EIPs to trace. For example to match all To EIP nodes, use to. The pattern matches by node and route id's Multiple patterns can be separated by comma.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "string", "javaType": "java.lang.String" },
     { "name": "camel.main.tracingStandby", "description": "Whether to set tracing on standby. If on standby then the tracer is installed and made available. Then the tracer can be enabled later at runtime via JMX or via Tracer#setEnabled(boolean) .", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
     { "name": "camel.main.useBreadcrumb", "description": "Set whether breadcrumb is enabled. The default value is false.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
diff --git a/core/camel-main/src/main/docs/main.adoc b/core/camel-main/src/main/docs/main.adoc
index 5d8124f..8443323 100644
--- a/core/camel-main/src/main/docs/main.adoc
+++ b/core/camel-main/src/main/docs/main.adoc
@@ -21,7 +21,7 @@ The following tables lists all the options:
 
 // main options: START
 === Camel Main configurations
-The camel.main supports 105 options, which are listed below.
+The camel.main supports 106 options, which are listed below.
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
@@ -125,6 +125,7 @@ The camel.main supports 105 options, which are listed below.
 | *camel.main.streamCaching{zwsp}StatisticsEnabled* | Sets whether stream caching statistics is enabled. | false | boolean
 | *camel.main.threadNamePattern* | Sets the thread name pattern used for creating the full thread name. The default pattern is: Camel (#camelId#) thread ##counter# - #name# Where #camelId# is the name of the CamelContext. and #counter# is a unique incrementing counter. and #name# is the regular thread name. You can also use #longName# which is the long thread name which can includes endpoint parameters etc. |  | String
 | *camel.main.tracing* | Sets whether tracing is enabled or not. Default is false. | false | boolean
+| *camel.main.tracingLogging{zwsp}Format* | To use a custom tracing logging format. The default format (arrow, routeId, label) is: %-4.4s %-12.12s %-33.33s | %-4.4s [%-12.12s] [%-33.33s] | String
 | *camel.main.tracingPattern* | Tracing pattern to match which node EIPs to trace. For example to match all To EIP nodes, use to. The pattern matches by node and route id's Multiple patterns can be separated by comma. |  | String
 | *camel.main.tracingStandby* | Whether to set tracing on standby. If on standby then the tracer is installed and made available. Then the tracer can be enabled later at runtime via JMX or via Tracer#setEnabled(boolean) . | false | boolean
 | *camel.main.useBreadcrumb* | Set whether breadcrumb is enabled. The default value is false. | false | boolean
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
index 1933e4c..5147364 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
@@ -274,6 +274,7 @@ public final class DefaultConfigurationConfigurer {
         camelContext.setTracing(config.isTracing());
         camelContext.setTracingStandby(config.isTracingStandby());
         camelContext.setTracingPattern(config.getTracingPattern());
+        camelContext.setTracingLoggingFormat(config.getTracingLoggingFormat());
 
         if (config.getThreadNamePattern() != null) {
             camelContext.getExecutorServiceManager().setThreadNamePattern(config.getThreadNamePattern());
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
index 6b13ed7..c4caa67 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
@@ -69,6 +69,8 @@ public abstract class DefaultConfigurationProperties<T> {
     private boolean tracing;
     private boolean tracingStandby;
     private String tracingPattern;
+    @Metadata(defaultValue = "%-4.4s [%-12.12s] [%-33.33s]")
+    private String tracingLoggingFormat;
     private boolean sourceLocationEnabled;
     private boolean messageHistory;
     private boolean logMask;
@@ -550,6 +552,19 @@ public abstract class DefaultConfigurationProperties<T> {
         this.tracingPattern = tracingPattern;
     }
 
+    public String getTracingLoggingFormat() {
+        return tracingLoggingFormat;
+    }
+
+    /**
+     * To use a custom tracing logging format.
+     *
+     * The default format (arrow, routeId, label) is: %-4.4s [%-12.12s] [%-33.33s]
+     */
+    public void setTracingLoggingFormat(String format) {
+        tracingLoggingFormat = format;
+    }
+
     public boolean isDebugging() {
         return debugging;
     }
@@ -2006,6 +2021,16 @@ public abstract class DefaultConfigurationProperties<T> {
     }
 
     /**
+     * To use a custom tracing logging format.
+     *
+     * The default format (arrow, routeId, label) is: %-4.4s [%-12.12s] [%-33.33s]
+     */
+    public T withTracingLoggingFormat(String format) {
+        this.tracingLoggingFormat = format;
+        return (T) this;
+    }
+
+    /**
      * Sets whether debugging is enabled or not.
      *
      * Default is false.