2014-10-01 71 views
0

我正在使用Wire-Tap来处理日志记录,并且我不允许使用日志记录通道适配器(因此为log4j)。向线控通道添加额外信息以登录Spring

我需要将附加信息添加到发送到具有处理日志的接口的网关的有效负载。

有没有一种方法没有在流程中指定一个header-richher?

代码澄清:

的线抽头部分

<int:channel id="IN_messageRouterFactory"> 
    <int:interceptors> 
     <int:wire-tap channel="IN_log_gateway" /> 
    </int:interceptors> 
</int:channel> 

日志记录网关:

<int:gateway service-interface="foo.bar.loginterface"> 
    <int:method name="log" request-channel="IN_log_gateway" /> 
</int:gateway> 

日志服务:

<int:chain input-channel="IN_log_gateway"> 
     <!-- transformations here... --> 
    <int:service-activator ref="fileLoggerService"/> 
</int:chain> 

我想加一些信息,以便我可以记录特定的管理有效负载信息

回答

0

从高处不清楚你要求什么。但无论如何,任何POJO服务都可以接受Message<?>作为论点。因此你有任何信息(​​和headers)做任何逻辑。

从这里我看不到有理由有<gateway>,因为WireTap是一个单向组件,所以你的自定义logger不应该返回任何结果。

UPDATE

感谢您的解释。

看起来这样做会更好一些消息丰富(像你说的header-enricher),因为你真的有一个message scope逻辑。

当然,您可以用wire-tap来克服这个问题,但是您必须有aggregatorcorrelategroup请求及其回复。再说一次:如果没有header-enricher,你就无法实现这个目标。

顺便说一句,您甚至可以将请求消息存储在标题中,并在最后的<service-activator>中使用它以获取正确的业务逻辑。

+0

你好,谢谢你的回答,如果我的问题有些令人困惑,我很抱歉。我试图用一个例子: 我想记录一个链(它有一个变压器和一个服务激活+错误检查路由器)的开始和结束。 这条链条有一个合乎逻辑的含义:假设这个链条的含义是“向一个Web服务请求一个数字”。因此,我正在寻找的是一种方法来连接线路的输入和输出通道,并添加(无需指定其他组件),链+结果的逻辑目的(失败或成功)。 – Massimo 2014-10-01 12:17:08

+0

根据您的意见在答案中增加了更多信息 – 2014-10-01 12:26:21

+0

与同事讨论此问题的同时,谢谢!:) – Massimo 2014-10-01 18:57:52

相关问题