java - 在 Spring Integration 中使用拦截器发送日志消息

标签 java spring logging spring-integration

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

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

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

最佳答案

您可以创建您感兴趣的 channel <publish-subscribe-channel/>,而不是使用窃听。 s。

将适当的转换器订阅到 channel (使用 output-channel 发送到日志记录适配器)。

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

另一种选择是全局拦截器,它向消息添加 header

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

然后将其发送至<header-value-router/>依次路由到适当的变压器,然后路由到单个日志记录 channel 适配器。

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

关于java - 在 Spring Integration 中使用拦截器发送日志消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690156/

相关文章:

java - JPA 加入继承类

java - Java 代码中是否可以从 MySQL 客户端运行大权限 SQL?

java - 在Eclipse中使用Jsoup时出错

java - NumberFormat.getCurrencyInstance();失败

java - Cron 表达式每两周重复一次

security - 在 cookie 中保存散列密码真的很危险吗?

java - spring-boot web应用程序无法启动: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean

Spring Security登录页面与loginProcessingURL

c# - 如何使用公共(public)跟踪标识?

python - python 的日志记录模块在 cygwin 下报告不正确的时区