我使用的是Camel 2.10.2,我有以下配置:
<camelContext id="camelContext" trace="true" xmlns="http://camel.apache.org/schema/spring">
<errorHandler type="LoggingErrorHandler" level="INFO" logName="my.logger" id="webserviceLoggingHandler"/>
<route id="webService" errorHandlerRef="webserviceLoggingHandler">
<from uri="direct:webService" />
<to uri="spring-ws:{{webservice.url}}?messageFactory=#messageFactory&messageSender=#messageSender" />
<onException>
<exception>java.lang.Exception</exception>
<to uri="log:my.logger?level=INFO"/>
</onException>
</route>
<route id="validate">
<from uri="activemq:validate" />
<to uri="direct:webService" />
</route>
</camelContext>
我希望这会记录到控制台。相反,我发现的是异常(例如像证书错误这样的IOExceptions)正在消耗,我真的需要记录它们。
调试代码我可以看到正在使用SpringDefaultErrorHandler,这是委托给LoggingExceptionHandler,它有一个注入了注入NOPLogger的CamelLogger。这意味着根本没有记录任何内容。
在阅读完文档之后,我不确定是否需要实现特定的错误处理程序和相关的onException处理,或者我应该只使用日志组件,还是我上面的两个组合?
感激地收到任何指导。
非常感谢
答案 0 :(得分:0)
好的,我发现了问题。我的骆驼设置很好。我们最近从Camel 2.6.0升级到2.10.2。阅读骆驼文档我发现从camel 2.7 slf4j用于记录而不是公共记录。我已经有了log4j和slf4j jar,但是缺少了slf4j-log4j绑定jar。这是导致所有日志记录转到NOPLogger的原因。一旦我将罐子放入其中,一切正常。
由于