运算符 log()
为了方便记录消息在 Spring Integration 流中的传递过程(<logging-channel-adapter>),我们提供了 log() 操作符。在内部,它由 WireTap ChannelInterceptor 实现,并以 LoggingHandler 作为其订阅者。它负责将传入的消息记录到下一个端点或当前通道。以下示例展示了如何使用 LoggingHandler:
.filter(...)
.log(LoggingHandler.Level.ERROR, "test.category", m -> m.getHeaders().getId())
.route(...)
在前面的示例中,一个 id 头信息被记录在 ERROR 级别,仅针对通过过滤器的消息,并在路由之前记录到 test.category 上。
从版本6.0开始,该操作符在流程末端的行为已与在流程中间的使用方式保持一致。换言之,即使移除 log() 操作符,流程的行为仍保持不变。因此,若流程末端预期不生成回复,建议在最后一个 log() 后使用 nullChannel()。