操作符 log()
为方便起见,为了记录消息在 Spring 集成流 (<logging-channel-adapter>
) 中的传输过程,提供了一个 `log()` 操作符。在内部,它由带有 `LoggingHandler` 作为其订阅者的 `WireTap` `ChannelInterceptor` 表示。它负责将传入的消息记录到下一个端点或当前通道。以下示例展示了如何使用 `LoggingHandler`
.filter(...)
.log(LoggingHandler.Level.ERROR, "test.category", m -> m.getHeaders().getId())
.route(...)
在上例中,只有通过过滤器且在路由之前,才会在ERROR
级别将id
头记录到test.category
中。
从6.0版本开始,此操作符在流程结束时的行为与其在流程中间的用法保持一致。换句话说,即使删除了log()
操作符,流程的行为仍然保持不变。因此,如果在流程结束时不期望产生回复,建议在最后一个log()
之后使用nullChannel()
。