当我连接到sftp服务器与Camel和密码是错误的,我没有得到任何关于这一点的信息。如果由于密码错误而没有尝试连接,我如何告诉camel做一些事情(例如日志)。如果用户名是错误的,也一样。下面是我的骆驼路线的一个例子。
CamelContext camelContext = new DefaultCamelContext();
camelContext.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
errorHandler(loggingErrorHandler().level(LoggingLevel.DEBUG));
from("sftp://my.sftp.server.com:21111/myDir&username=user&password=secret")
.to("file:test");
});
camelContext.start();
就我所理解的行errorHandler(loggingErrorHandler().level(LoggingLevel.DEBUG));应该能够记录发生的所有事情。
粤语吗?
错误一定被抑制在某个地方;Camel FTP组件在TRACE级别记录应该包括所有内容的内容。您使用slf4j吗?如果没有,您可以通过创建一个名为"log4j"的文件来启用它。
设置该文件的内容为:
log4j.rootLogger=INFO, out
og4j.logger.org.apache.camel=DEBUG
这将使Camel的日志级别为DEBUG。这意味着您应该获得大量日志,包括登录失败。
您还需要将其包含在pom.xml中(如果使用maven):
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
</dependencies>
查看本FAQ
- http://camel.apache.org/why-does-my-file-consumer-not-pick-up-the-file-and-how-do-i-let-the-file-consumer-use-the-camel-error-handler.html
也适用于FTP。
你需要用Camel错误处理程序桥接路由消费者,让路由errorHandler做出反应。这有点像先有鸡还是先有蛋的问题,错误处理程序通常只在有Exchange要路由时才会做出反应。但是,如果FTP使用者在创建Exchange之前失败,则没有Exchange要路由。这就是桥能做的。
谢谢,我发现Camel在Info级别记录它。但他们最后的答案是有希望的FAQ锁。我想我会试一试:)
谢谢