Mule:使用 WS Consumer 组件时如何记录 SOAP 负载

Mule: how to log SOAP payloads when using WS Consumer component

我正在使用 WS Consumer 组件从 Mule 流中调用外部 WS。 我想记录 WS 消费者请求和响应 sent/received 的 SOAP 负载。 我怎样才能做到这一点?

尝试在 log4j2.xml 或 log4j.xml、

中添加此日志处理程序
    <AsyncLogger name="org.glassfish.grizzly" level="INFO" />
    <AsyncLogger name="org.asynchttpclient" level="INFO" />
    <AsyncLogger name="sun.net.www.protocol.http.HttpURLConnection.level" level="ALL" />
    <AsyncLogger name="org.apache.http.wire" level="ALL" />
    <AsyncLogger name="org.apache.http.client" level="ALL" />
    <AsyncLogger name="org.apache.xerces.parsers.SAXParser" level="ALL" />
    <AsyncLogger name="com.ning.http" level="ALL" />

此问题已针对票据 MULE-7501 下的 HTTP 传输得到解决: https://www.mulesoft.org/jira/browse/MULE-7501

因此,需要将以下行添加到 log4j2.xml:

<AsyncLogger name="org.mule.module.http.internal.HttpMessageLogger" level="DEBUG"/>

不幸的是,当 WS 消费者使用 HTTP 以外的传输(例如 JMS)时它不起作用。

更新:

使用 WS Consume 记录 SOAP 负载的更正确方法是按照以下描述配置 CXF 拦截器: http://cxf.apache.org/docs/configuration.html

这种方式适用于非 http 传输。