【问题标题】:WSO2 ESB print all TRANSPORT_HEADERSWSO2 ESB 打印所有 TRANSPORT_HEADERS
【发布时间】:2017-05-23 10:45:04
【问题描述】:

我可以在 WSO2 ESB 中使用序列中的以下代码打印单个传输标头:

<log level="custom">
    <property name="oneHeader" expression="$trp:FILE_NAME"/>
</log>

但我需要打印所有可用的传输属性。有一个名为“[TRANSPORT_HEADERS][1]”的axis2 属性,但在打印此属性时它始终为空。

<log level="custom">
    <property name="allHeaders" expression="get-property('axis2','TRANSPORT_HEADERS')"/>
</log>

因为我不知道所有标头名称,所以我需要知道如何打印所有传输标头?

【问题讨论】:

    标签: logging wso2 wso2esb


    【解决方案1】:

    我不知道如何打印所有传输属性,但是如果您在序列中设置断点并启用调试,如https://docs.wso2.com/display/EI611/Debugging+Mediation 中所述,您可以在“变量”选项卡中找到所有传输属性。@ 987654322@

    【讨论】:

      【解决方案2】:

      我们无法使用属性调解器记录此属性,因为这是axis2-transports 中的内部JAVA 映射。因此,我们可能需要为此目的使用类中介。

      以下是一个示例。

      您可以将class mediator jar 直接放在 EI_HOME/lib 或 ESB_HOME/repository/components/lib 中并使用以下配置

      <class name="org.sample.LogTransportHeaders"/>
      

      在 log4j.properties 文件中添加以下内容后在代理或 API 中

      log4j.logger.org.sample.LogTransportHeaders=INFO
      

      更多详情请参考这里:https://medium.com/@nirothipanram/wso2-ei-print-all-transport-headers-12aabb4027cc

      【讨论】:

        【解决方案3】:

        您可以使用 XPath 变量方便地访问 HTTP 标头,从技术上讲,这些标头是 WSO2 ESB 中的传输标头。读取名为 X-EMPID 的 HTTP 标头的最简单方法是使用以下 XPath:$trp:X-EMPID,其中 $trp 前缀表示冒号后面的部分是传输属性的名称。要记录标头值,您可以使用以下日志中介:

        <log level="custom">
          <property name="X-EMPID value" expression="$trp:X-EMPID" />
        </log>
        

        要将属性 myProperty 设置为 X-EMPID HTTP 标头的值(已存储在传输属性中),您可以使用属性中介:

        <property name="myProperty" expression="$trp:X-EMPID" />
        

        该功能记录在WSO2 site 上。

        for more

        【讨论】:

        • 但问题是“因为我不知道所有标头名称,所以我需要知道如何打印所有传输标头?”
        • 这个答案没有帮助,也没有回答@FiveO提出的问题
        猜你喜欢
        • 2019-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-02
        • 2021-05-07
        • 1970-01-01
        相关资源
        最近更新 更多