0

我正在使用 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&amp;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 ,它有一个注入的 CamelLogger ,它有一个 NOPLogger 注入。这意味着根本没有记录任何内容。

阅读完文档后,我不确定是否需要实现特定的错误处理程序和相关的 onException 处理,或者我是否应该只使用日志组件,或者像上面那样混合使用两者?

感激地接受任何指导。

非常感谢

4

1 回答 1

0

好的,我发现了问题。我的骆驼设置很好。我们最近从 Camel 2.6.0 升级到 2.10.2。阅读骆驼文档,我发现从骆驼 2.7 开始,slf4j 用于日志记录而不是 commons-logging。我已经有了 log4j 和 slf4j jar,但是缺少 slf4j-log4j 绑定 jar。这就是导致所有日志记录都转到 NOPLogger 的原因。一旦我把罐子放进去,一切都很好。

谢谢

于 2013-07-04T08:51:37.580 回答