Since we're on a major migration process of this website, some component documents here are out of sync right now. In the meantime you may want to look at the early version of the new website
https://camel.apache.org/staging/
We would very much like to receive any feedback on the new site, please join the discussion on the Camel user mailing list.

How do I enable streams when debug logging messages in Camel

Available as of Camel 2.1

When you run Camel with DEBUG level as logging, it will log the messages and its content from time to time.
As some messages can contain streams, which are prone to be not readable multiple times, and therefore Camel will by default not log these types.

These instances are not logged by default

  • java.xml.transform.StreamSource
  • java.io.InputStream
  • java.io.OutputStream
  • java.io.Reader
  • java.io.Writer

You will see this in the log as:

 
DEBUG ProducerCache                  - >>>> Endpoint[direct:start] Exchange[Message: [Body is instance of java.xml.transform.StreamSource]]

Here we have a message which is XML stream based.
You can customize whether Camel should log the payload anyway.

Customizing from Java DSL

You add to the Camel properties the flag to log streams.

        context.getProperties().put(Exchange.LOG_DEBUG_BODY_STREAMS, "true");

Notice default is false.

Customizing from Spring DSL

You add to the Camel properties the flag to log streams.

   <camelContext>
       <properties>
           <property key="CamelLogDebugBodyStreams" value="true"/>
      </properties>
   </camelContext>

Notice default is false.

© 2004-2015 The Apache Software Foundation.
Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
Graphic Design By Hiram