2

是否可以配置 Camel 路由以将消息发送到特定的 log4j 记录器?例如,我有以下记录器:

<logger name="com.me.log.mylogger" additivity="false">
    <level value="debug" />
    <appender-ref ref="file_appender_messages" />
</logger>

file_appender_messages只是一个RollingFileAppender

然后我尝试在我的骆驼上下文中使用以下内容记录它:

<to uri="log:com.me.log.mylogger?level=INFO" />

但它在命令行而不是在指定的日志文件中输出file_appender_messages

25-Oct-2012 11:46:44 org.apache.camel.processor.CamelLogger log
INFO: [MESSAGE BODY]

我希望能够对来自不同来源的消息使用不同的记录器。我可以在我的消息处理器中做到这一点,但理想情况下它可以在路由 xml 中进行配置。可以做到吗?

4

2 回答 2

2

Camel 使用 slf4j 有一段时间了。所以你必须首先配置 slf4j 使用 log4j 作为后端。在 maven 中添加以下依赖项:

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.6.1</version>
</dependency>
<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.16</version>
</dependency>
于 2012-10-26T05:58:17.777 回答
2

我通过在我的应用程序 XML 文件中将 Logger 定义为 Bean 来解决此问题

<bean id="myLogger" class="org.apache.log4j.Logger" factory-method="getLogger">
    <constructor-arg value="com.me.log.mylogger"/>
</bean>

然后在我的路线中,当我想记录消息时,我只需将其定向到 Bean 上的相关方法

<to uri="bean:myLogger?method=info" />
于 2012-10-31T14:46:03.673 回答