Camel 日志谓词写入哪个文件?

To which file does the Camel log predicate write?

我有一条 RouteBuilder 路线,其中包括:

.log(LoggingLevel.DEBUG, "Unknown type on reporting queue")

很抱歉提出这个问题,但是这会被记录下来吗? hawtio 确认它正在被执行。但它不在 /var/log/tomcat/myproject.logvar/log/tomcat/myproject/camel.log 文件中。我也没有在 /var/log/messages

中看到它

我在 myproject.log 中看到从我的 bean 记录的消息,但 .log(...) 谓词没有记录任何消息。

编辑 经过一番挖掘,我发现 slf4j 可以位于 log4j 之上。我找到了一个配置文件,并且能够通过在日志谓词中插入适当的标识符来写入我期望的日志:

.log(LoggingLevel.DEBUG, "com.mycompany.mything", "Unknown type on reporting queue")

com.mycompany.mything 在 log4j 文件中定义,以便写入所需的日志文件。

这不是一个非常精确的描述,但坦率地说 Java 日志记录让我很困惑。

Camel 使用 slf4j:日志不是直接写入文件,而是通过全局配置的记录器写入文件。此配置由骆驼负责。

LogDefinition class.

上实现了查找记录器的策略

基本上:

  1. 可以显式指定记录器
  2. 在注册表中查找 slf4j 记录器
  3. 创建一个 slf4j 记录器,其名称可以明确指定,如果未设置,它将回退到路由的标识符

所以,如果您没有在注册表中设置记录器,也没有设置 routeId,那么记录器应该类似于 "route-1"。日志级别用于:您的日志将处于调试级别(默认情况下,它可能不会打印)