0

是否可以在 Spring Integration 中配置拦截器来指定日志消息?

这与使用窃听器将消息发送到日志通道适配器订阅的日志通道形成对比。这种方法的问题是日志记录通道具有确切记录内容的表达式。在我的用例中,我想使用全局通道拦截器来指定日志消息并将其发送到日志通道适配器,而不必为我可能想要的每个可能的日志消息定义一个日志通道适配器。

有那么一刻,我想我可以使用 SpEL 表达式定义一个服务激活器,以在通道拦截器定义中生成字符串日志消息(以及所需日志通道的输出通道),但它正在寻找一个输入通道。

4

1 回答 1

1

您可以制作您感兴趣的频道,而不是使用窃听器<publish-subscribe-channel/>

将适当的转换器订阅到通道(使用output-channel日志适配器)。

order您可以使用转换器和其他订阅者的属性来控制日志是在真实订阅者之前还是之后发生。

另一种选择是在消息中添加标头的全局拦截器

MessageBuilder.fromMessage(message).setHeader('foo', routeForThisMessageType).build()

然后将其发送到 a <header-value-router/>,然后路由到适当的转换器,然后路由到单个日志记录通道适配器。

当然,如果您愿意,您可以将路由和/或转换直接组合到拦截器中。

于 2013-02-04T17:37:05.960 回答