首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache camel bindy -如何记录或调试

Apache camel bindy -如何记录或调试
EN

Stack Overflow用户
提问于 2014-10-21 12:46:37
回答 1查看 2.4K关注 0票数 1

我在试着从骆驼·宾迪那里得到一些日志信息。我使用带注释的product和csv文件作为源代码的BindyCsvDataFormat bindyProduct进行了工作设置。

现在,我更改了CSV文件和带注释的bean。处理接缝被卡在bindy处理器中,但我没有得到任何信息/日志。我的debugProcessor根本达不到。如果我把它放在解组步骤之前,那么它会记录一些东西,然后我就可以调试它了。我想知道为什么新文件不再适合/匹配,为什么没有日志或异常或任何可能有帮助的东西。

代码语言:javascript
复制
        from("file:csv-testdata")
        .unmarshal(bindyProduct)    
        .process(debugProcessor)

提前感谢AJ

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-28 09:52:51

apache camel中异常的记录

当我问这个问题的时候,我刚刚开始我骑骆驼的经历。与此同时,我发现了一些伟大的方法来实现,我在寻找什么。因此,如果有人在寻找这个问题的答案:

1.第一种方法:

为您的项目启用日志记录,正确配置它,并通过向路由添加日志URL来处理日志记录。

1.1将日志记录的依赖项添加到pom.xml中,例如

代码语言:javascript
复制
<groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
</dependency>

1.2将log4j.properties文件添加到src/main/resources文件夹中(如果您想使用log4j)。定义日志级别、附加程序等

1.3将日志添加到您的路由中

代码语言:javascript
复制
from("...")
.unmarshal(bindyProduct)
.to("log:com.your.package.YourChosenName?level=ERROR&multiline=true&showCaughtException=true")
.to(...);

可以在这里找到所有选项的列表,您可以使用http://camel.apache.org/log.html

代码语言:javascript
复制
&showAll=true 

记录所有信息,如标题、属性、正文等。

请记住,URL "level=“选项的日志级别的严重性必须等于或高于在log4j.properties文件中定义的日志级别。

2.第二种方法

定义一个DebugProcessor,它为您记录异常,并将其放在处理器之后的路由中,它的行为神秘。

编写DebugProcessor处理器必须实现公共空进程( exchange)抛出异常{

如果你想知道为什么你找不到任何例外

代码语言:javascript
复制
exchange.getException()

尝试通过使用

代码语言:javascript
复制
Exception exception = (Exception) exchange.getProperty(Exchange.EXCEPTION_CAUGHT);

做任何你喜欢做的例外(登录到sysout,.)

2.2将调试器连接到RouteBuilder Java类中的路由(或其他地方,Spring,.)

代码语言:javascript
复制
DebugProcessor debugProcessor1 = new DebugProcessor();

from("...")
.unmarshal(bindyProduct)
.process(debugProcessor1)
.to(...);

3.第三种方法

使用camels .doTry()/.doCatch()或者(可能更好)使用onException()路线

(http://camel.apache.org/exception-clause.html / camel.apache.org/try-catch-finally.html)

3.1构建与要调试的路由分离的onException()路由

下面的onException路由聚合异常并将它们写入一个很好的、人类可读的方式(通过速度模板),每隔5秒或10个输出:

代码语言:javascript
复制
onException(Exception.class) // OR a special excepion (io, etc)
        .aggregate(header("CamelFileParent"),
                new ExceptionAggregationStrategy())
                .completionSize(10).completionTimeout(5000)
        .to("velocity:velocity/errors.log.vm")
        .to("file:camel/xml-out?fileName=errors-${file:name.noext}-${date:now:yyyy-MM-dd_HH-mm-ss-SSS}.log");

这只是一个例子,你可以做任何你想做的事,骆驼可以,例如发送邮件,把他们放在数据库等。

您现在不需要在您的路由中添加任何额外的处理器或日志:

代码语言:javascript
复制
from("...")
.unmarshal(bindyProduct)
.to(...);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26487115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档