现有应用程序使用 Camel 日志记录(陷入“log()”DSL,以及 Log 组件。
我们希望拦截或覆盖,以便每条日志消息也记录出特定的 Header 值(例如 x-correlation-id=ABC-123)
实现这一目标的好的惯用方法是什么?
Apache CamelLogListener从2.19.0. 这是非常强大的,因为它的方法onLog,它是记录之前正确调用,有实例Exchange,CamelLogger和消息。您可以在那里几乎没有限制地自定义消息。
LogListener 的实现:
public class MyLogListener implements LogListener {
@Override
public String onLog(Exchange exchange, CamelLogger camelLogger, String message) {
return String.format("%s: %s", exchange.getIn().getHeader(Exchange.CORRELATION_ID), message);
}
}
Run Code Online (Sandbox Code Playgroud)
日志监听器注册:
getContext().addLogListener(new MyLogListener());
Run Code Online (Sandbox Code Playgroud)
如果您正在使用Apache的骆驼版本2.21.0和更新,你不需要注册到上下文,因为它是在注册中心查找到,所以标注MyLogListener的@Bean是足够的。
| 归档时间: |
|
| 查看次数: |
1018 次 |
| 最近记录: |