使用Apache Camel进行异步日志记录

时间:2017-05-22 13:52:52

标签: asynchronous logging apache-camel jbossfuse

我正在尝试使用Apache Camel实现异步记录器。我想在调用第三方API时记录请求和响应有效负载。目前,我正在使用activemq执行此操作,如下所示:

....
<!-- Prepare request -->
<to uri="activemq:loggingQueue??disableReplyTo=true&amp;preserveMessageQos=true"/>
<recipientList>
  <simple>http4:api.example.com</simple>
</recipientList>
.......

<route>
  <from uri="activemq:loggingQueue"/>
  <!-- log payload -->
</route>
  • 有没有更好的方法来实现此功能?
  • 我可以将log4j2异步日志记录与camel集成吗?如果有可能,是否有任何教程证明相同?我看不到任何教程引用log4j2异步日志记录和骆驼。

2 个答案:

答案 0 :(得分:2)

您可以使用EventNotifier挂钩Camel,该消息在将消息发送到端点之前/之后具有事件。然后,您可以使用它来写入日志:http://camel.apache.org/eventnotifier-to-log-details-about-all-sent-exchanges.html

此外,log4j和其他日志记录api通常有各种适配器,可以快速,异步/批量方式将日志写入文件/网络。

答案 1 :(得分:1)

实际上,camel使用sl4fj,因此您可以调整logback以执行异步日志记录以满足您的要求。以下是一些想法:http://blog.takipi.com/how-to-instantly-improve-your-java-logging-with-7-logback-tweaks/