Java Spring集成中使用拦截器发送日志消息

Java Spring集成中使用拦截器发送日志消息,java,spring,logging,spring-integration,Java,Spring,Logging,Spring Integration,是否可以在Spring集成中配置拦截器来指定日志消息 这与使用有线抽头将消息发送到日志通道适配器订阅的日志通道形成对比。这种方法的问题在于,日志记录通道具有确切记录内容的表达式。在我的用例中,我希望使用全局通道拦截器来指定日志消息并将其发送到日志通道适配器,而不必为我可能需要的每个可能的日志消息定义日志通道适配器 有一段时间,我想我可以用一个SpEL表达式定义一个服务激活器,在通道拦截器定义中生成字符串日志消息(并使用deisred日志通道的输出通道),但它正在寻找一个输入通道。而不是使用有线抽

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

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


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

而不是使用有线抽头,您可以制作您感兴趣的频道

将适当的转换器订阅到通道(将
输出通道
转到日志适配器)

您可以使用transformer和其他订阅服务器上的
order
属性来控制日志是发生在实际订阅服务器之前还是之后

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

MessageBuilder.fromMessage(message).setHeader('foo', routeForThisMessageType).build()
然后将其发送到
,然后依次路由到相应的转换器,然后再路由到单日志通道适配器


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

谢谢Gary。遗憾的是,我无法更改原始通道(我有一个“抽象”项目和一组配置,实现子项目填补了空白)。我希望用一个全球拦截器来“装饰”现有的频道。我已经在我的答案中添加了其他的选择。