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

时间:2016-03-04 19:41:39

标签: apache-camel

我有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记录让我感到困惑。

1 个答案:

答案 0 :(得分:2)

Camel使用slf4j:它不直接写入文件的日志,而是通过记录器,全局配置将其写入文件。这种配置不符合骆驼的责任。

找到记录器的策略是在LogDefinition类上实现的。

基本上:

  1. 可以明确指定记录器
  2. slf4j Logger在注册表中查找
  3. 创建一个slf4j记录器,其名称可以明确指定,如果没有设置,则回退到路径的标识符
  4. 因此,如果您没有在注册表中设置记录器,并且没有设置routeId,则记录器应该类似于" route-1"。日志级别用于:您的日志将处于调试级别(默认情况下,它可能不会打印)