是否可以配置Camel路由以将消息发送到特定的log4j记录器?例如,我有以下记录器:
<logger name="com.me.log.mylogger" additivity="false">
<level value="debug" />
<appender-ref ref="file_appender_messages" />
</logger>
file_appender_messages
只是RollingFileAppender
。
然后我尝试使用Camel上下文中的以下内容来记录它:
<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中配置。可以吗?
答案 0 :(得分: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>
答案 1 :(得分: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" />