LogHow can I log processing a Message? Camel provides many ways to log processing a message. Here is just some examples:
Using log DSLAnd in Camel 2.2 you can use the log DSL which allows you to use Simple language to construct a dynamic message which gets logged. from("direct:start").log("Processing ${id}").to("bean:foo"); Which will construct a String message at runtime using the Simple language. The log message will by logged at INFO level using the route id as the log name. By default a route is named route-1, route-2 etc. But you can use the routeId("myCoolRoute") to set a route name of choice.
The log DSL have overloaded methods to set the logging level and/or name as well. from("direct:start").log(LoggingLevel.DEBUG, "Processing ${id}").to("bean:foo"); For example you can use this to log the file name being processed if you consume files.
from("file://target/files").log(LoggingLevel.DEBUG, "Processing file ${file:name}").to("bean:foo");
Using log DSL from SpringIn Spring DSL its also easy to use log DSL as shown below:
<route id="foo">
<from uri="direct:foo"/>
<log message="Got ${body}"/>
<to uri="mock:foo"/>
</route>
The log tag has attributes to set the message, loggingLevel and logName. For example:
<route id="baz">
<from uri="direct:baz"/>
<log message="Me Got ${body}" loggingLevel="FATAL" logName="cool"/>
<to uri="mock:baz"/>
</route>
Using slf4j MarkerAvailable as of Camel 2.9 You can specify a marker name in the DSL
<route id="baz">
<from uri="direct:baz"/>
<log message="Me Got ${body}" loggingLevel="FATAL" logName="cool" marker="myMarker"/>
<to uri="mock:baz"/>
</route>
Using This PatternIf you would like to use this EIP Pattern then please read the Getting Started, you may also find the Architecture useful particularly the description of Endpoint and URIs. Then you could try out some of the Examples first before trying this pattern out. |