2013-02-04 82 views
0

是否可以在Spring集成中配置攔截器來指定日誌消息?在Spring集成中使用攔截器發送日誌消息

這與使用連線將消息發送到日誌通道適配器訂閱的日誌記錄通道相反。這種方法的問題在於日誌記錄通道具有表達什麼要記錄的內容。在我的用例中,我希望使用全局通道攔截器來指定日誌消息並將其發送到日誌通道適配器,而不必爲每個可能的日誌消息定義日誌通道適配器。

有一段時間我以爲我可以定義一個帶有SpEL表達式的服務激活器來在通道攔截器定義中產生字符串日誌消息(以及deisred日誌通道的輸出通道),但它正在尋找輸入信道。

回答

1

而不是使用電線攻絲,您可以使您感興趣的渠道<publish-subscribe-channel/> s。

訂閱合適的變壓器到通道(output-channel去日誌記錄適配器)。

您可以使用變壓器和其他用戶的order屬性控制日誌是在真實用戶之前還是之後發生。

另一個替代方案是一個全球性的攔截器,增加了一個標頭消息

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

然後將其發送到<header-value-router/>,這反過來,路由到適當的變壓器,並從那裏到所述單個測井通道適配器。

當然,如果你願意,你可以將路由和/或轉換權組合到攔截器中。

+0

謝謝加里。可悲的是,我無法改變原來的渠道(我有一個'抽象'項目和一套配置,並且實施子項目填補了空白)。我希望用全局攔截器「裝飾」現有的通道。 –

+0

我添加了其他替代方案來回答我的問題。 –