操作符 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()。