Tracer
Camel’s tracer is used for logging message details during routing, where you can see the route path of each message as they happen. Details of the message is also logged such as the message body, and headers.
There is an alternative tracer that captures the messages in a Backlog Tracer. |
Enabling Tracing
In Java you set tracing on CamelContext
:
context.setTracing(true);
And in XML DSL:
<camelContext trace="true" xmlns="http://activemq.apache.org/camel/schema/spring">
...
</camelContext>
And in Spring Boot
camel.springboot.tracing = true
Setting Tracing in Standby mode
By default Camel optimizes and opt-out tracing. Therefore, you would either have to enable tracing from the startup, or turn on standby mode, to allow tracing to be enabled later during runtime.
To set tracing in standby mode you can do:
context.setTracingStandby(true);
And in XML DSL:
<camelContext trace="standby" xmlns="http://activemq.apache.org/camel/schema/spring">
...
</camelContext>
And in Spring Boot
camel.springboot.tracing-standby = true
If tracer is in standby mode, then tracing is made available, and can be enabled during runtime. This requires to either use JMX or enable via Java code:
Tracer tracer = context.getTracer();
tracer.setEnabled(true);
Trace Logging Formatting
The tracer formats the execution of exchanges to log lines. They are logged at INFO
level in the log category: org.apache.camel.Tracing
.
The message information from the Exchange is formatted using ExchangeFormatter
and the default implementation has many options you can configure accordingly to the javadoc.
The tracer outputs the logging with a prefix with the following information:
-
arrow - (direction whether input or output)
-
routeId - the current route
-
label - the current EIP node
This output is assembled using the following default format:
-
%-4.4s [%-12.12s] [%-33.33s]
The default format can be customized using, for exameple to use wider columns:
context.setTracingLoggingFormat("%-4.4s [%-30.30s] [%-50.50s]");
And in XML DSL:
<camelContext trace="true" traceLoggingFormat="%-4.4s [%-30.30s] [%-50.50s]">
...
</camelContext>
And in Spring Boot
camel.springboot.tracing-logging-format = %-4.4s [%-30.30s] [%-50.50s]
And in Camel Main / Quarkus
camel.main.tracing-logging-format = %-4.4s [%-30.30s] [%-50.50s]