Log camel exchange body as string using log4j

tvshajeer picture tvshajeer · Dec 21, 2016 · Viewed 11.8k times · Source

I'm trying to log exchange body as a string using log4j.

<convertBodyTo id="_convertBodyTo1" type="java.lang.String"/>
<to id="_to1" uri="log:com.javarticles?level=INFO"/>

but it's not logging as string

15:09:05,403 | INFO  | qtp938841692-57  | javarticles                      |
198 - org.apache.camel.camel-core - 2.15.1.redhat-620133 | 
Exchange[ExchangePattern: InOut, BodyType: java.lang.String, Body: 
org.apache.cxf.jaxrs.impl.HttpHeadersImpl@52767902]

Do we have to make extra logic to log exchange body? And how do we log http headers?

Answer

Claus Ibsen picture Claus Ibsen · Dec 21, 2016

If you only want to log the message body, then use

<log message="${body}"/>

The log endpoint logs a bunch of details by default, you can turn these on|off using the options listed: http://camel.apache.org/log