How to Log Headers with Apache Camel

This is a short tutorial to show you can log Message Headers from Apache Camel in a simple way

Camel Headers in a nushell

Messages are the entities you can use to communicate between systems through messaging channels. Each message flows in one direction from a sender to a receiver. Messages have a body (a payload), headers, and optional attachments.

camel how to log header

Usually Headers are identifiers, hints about content encoding, authentication info, and so on. Headers are name-value pairs; the name is a unique, case-insensitive string, and the value is of type java.lang.Object.

It follows that Camel does not impose any constraint on the type of the headers. Headers are stored as a map within the

Logging the Header

The following example RouteBuilder Class shows you how you can log Camel Headers through the Log component:

public class MyRouteBuilder extends RouteBuilder {

    public void configure() throws Exception {

        // Kafka Producer using Message key

        // Kafka Consumer
                .log(LoggingLevel.INFO, "Message received : ${body}")
                .log(LoggingLevel.INFO, "${in.headers.RandomNumber}");


In many cases, you can check headers to determine the flow of your Camel Route. Here is an example:

  from("direct:header-start").setHeader("foo", simple("{{foo}}")).choice().when(simple("${} == 'bar'"))

Finally, if you are using XML to log headers, the following snippet works as well:

<log message="random number: ${header[RandomNumber]}"/>

Leave a comment