camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Hilton <pedro+ca...@lunatech.com>
Subject Solved: Logging cause of failure with deadLetterChannel error handler?
Date Wed, 15 May 2013 12:38:38 GMT
On 14 May 2013, at 18:10, Peter Hilton <pedro+camel@lunatech.com> wrote:
> I have a route that takes a file, parses it and then sends JSON to a web service. If
the Camel processor that parses the file throws a parse exception, the configured error handler
moves the file to the dead letter endpoint. This much works.
> 
> 	errorHandler(deadLetterChannel(failureEndpoint).disableRedelivery())
> 
> However, I *also* want to log an error with the parse exception that the parser throws.
How should I do this?

I now have something that works.

After reading enough of the Scala DSL unit tests, I added the following to my route builder:

	handle[Exception] {
	  log(LoggingLevel.ERROR, "${id} ${exception}")
	  to(failureEndpoint)
	}.handled

It doesn't appear to be necessary to call maximumRedeliveries(0) on handle, since I don't
get retries when I do this.

This is not ideal because I would prefer this to be a single statement, e.g. using a custom
component, to be able to customise the log output, and to include the stack trace. I may get
to those things, but I've run out of time for now.

Peter
Mime
View raw message