Camel上下文中的异常堆栈跟踪

25
我想从Apache Camel的onException处理程序中检索堆栈跟踪:
   <onException>
            <exception>java.lang.Exception</exception>
            <handled>
                <constant>true</constant>
            </handled>

            <setHeader headerName="exception">
                <simple>${exception}</simple>
            </setHeader>
   </onException>

但是,上面的代码只显示了异常,而不是完整的堆栈跟踪。

我知道Camel将捕获的异常作为Exchange属性存储,并使用键Exchange.EXCEPTION_CAUGHT进行存储,但是如何从camel上下文路由文件中检索它呢?

1个回答

40

使用 exception.stacktrace 来获取堆栈跟踪信息。请参见此页面上列出的表格中的变量:http://camel.apache.org/simple

<simple>${exception.stacktrace}</simple>

还有一个 ${exception.message} 可以用来引用异常消息本身。


谢谢,这个方法非常有效。创建一个 bean 是我心中另一种选择。 - user300285
谢谢 Claus。关于这个问题,我想问一下 - 是否也可以使用 exception.class - vikingsteve
好的,我回答了 - 是的,这是可能的。但是在简单表达式中最好只使用“异常”,因为它会给你类名和消息。 - vikingsteve
通常情况下,Camel会将异常放入CamelExceptionCaught属性中,如何在这种情况下打印堆栈跟踪? - divideByZero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接