如何在Camel的onException子句中设置记录器(日志类别/日志名称)?

时间:2014-10-15 05:39:17

标签: logging apache-camel onexception

我有以下路线:

            onException(Exception.class)
                .logExhausted(true)
                .logStackTrace(true)
                .logExhaustedMessageHistory(true)
                .process(new MyErrorProcessor());

            from(uri)
            .process(new MyProcessor());

发生错误时,日志将打印在org.apache.camel.processor.DefaultErrorHandler日志类别中。有没有办法将其更改为自定义日志类别? .errorHandler()允许你设置一个日志类别,但.onException()似乎不允许它。

感谢。

3 个答案:

答案 0 :(得分:0)

你可以尝试

.onException(Exception.class)
            .to("log:logger_name?level=ERROR&multiline=true&showCaughtException=true&showStackTrace=true")
...

答案 1 :(得分:0)

您可以尝试以下操作:

onException(Exception.class)
                .handled(true)
                .log(LoggingLevel.ERROR, this.getClass().getSimpleName(),
                        "${exception.stacktrace} ${messageHistory(false)}");

您还可以在此处查找更多变量: https://camel.apache.org/manual/latest/simple-language.html

答案 2 :(得分:0)

默认情况下,路由ID用作记录器类别。因此,将路由ID设置为类名,然后您可以按照通常的方式配置日志记录:

from(uri)
    .id(this.getClass().getName())
    .process(new MyProcessor());

({id在骆驼2中可能被命名为routeId;以上功能在骆驼3中起作用。)