2016-03-04 66 views
0

我有一个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从我的豆记录的消息,但没有被.log(...)谓语记录。

编辑 经过一番挖掘,我发现slf4j可以坐在log4j之上。我发现了一个配置文件,并能够写入我被在日志谓词插入适当的标识符期待日志:

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

com.mycompany.mything在log4j的文件,使得它写入到所需的日志文件中定义。

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

回答

2

骆驼使用slf4j:它不是直接写入文件,而是通过一个记录器,它被全局配置写入文件中。这种配置没有骆驼责任。

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

基本上是:

  1. 记录器可以被明确指定
  2. 一个SLF4J记录器是
  3. 一个SLF4J记录器与可明确指定一个名字创建的注册表中查找,如果没有集,它退回到路线的标识

所以,如果你没有设置你的注册表中的一个记录,并没有设置一个路由ID,然后记录仪应该是像“路线-1” 。日志级别用于:您的日志将处于调试级别(默认情况下,它可能未打印)