在Spring集成中使用Interceptor发送日志消息

时间:2013-02-04 15:42:54

标签: java spring logging spring-integration

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以制作您感兴趣的频道<publish-subscribe-channel/>,而不是使用有线电视。

将相应的转换器订阅到通道(output-channel转到日志记录适配器)。

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

另一种选择是全局拦截器,它为消息添加标题

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

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

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