通过WSO2 ESB 4.8.1中的日志跟踪消息

通过WSO2 ESB 4.8.1中的日志跟踪消息,wso2,wso2esb,mdc,Wso2,Wso2esb,Mdc,我需要获得一个唯一的ID来通过日志跟踪消息。 我正在使用WSO2 ESB 4.8.1。 我发现了一篇与WSO2 ESB 5.0.0相关的文章。 它描述了如何使用MessageContext对象为每条消息设置唯一ID,以便我可以从消息流中的任何位置访问它。 是否也可以在WSO2 ESB 4.8.1中实现类似的解决方案?在WSO2 ESB 4.8.1中(移植该)解决方案? 您知道不同的解决方案吗?您可以在启动时将MessageID保存在属性中,并将其添加到日志中介中。例如: <property

我需要获得一个唯一的ID来通过日志跟踪消息。 我正在使用WSO2 ESB 4.8.1。 我发现了一篇与WSO2 ESB 5.0.0相关的文章。 它描述了如何使用MessageContext对象为每条消息设置唯一ID,以便我可以从消息流中的任何位置访问它。 是否也可以在WSO2 ESB 4.8.1中实现类似的解决方案?在WSO2 ESB 4.8.1中(移植该)解决方案?
您知道不同的解决方案吗?

您可以在启动时将MessageID保存在属性中,并将其添加到日志中介中。例如:

<property description="SetMessageUUID" expression="fn:substring-after(get-property('MessageID'), 'urn:uuid:')" name="MessageUUID" scope="default" type ="STRING"/>
<log>
    <property name="Step" expression="Request service A"/>
    <property name="ID" expression="get-property('MessageUUID')"/>
</log>
<call>
.....
</call>
<log>
    <property name="Step" expression="Response service A"/>
    <property name="ID" expression="get-property('MessageUUID')"/>
</log>

.....

如果您正在处理SOAP消息,则可以使用MessageID属性。使用中介中的常规get-property()XPath函数可以使用此属性。是的,您不能在旧版本中使用此属性。感谢@PhilippeSevestre提供您的答案。是的,我处理SOAP消息。我会尽快尝试的,谢谢你的回答。我曾尝试使用本文中描述的MDC解决方案,使用我的一个代理服务,但没有成功。Log4j不会在我的日志中写入唯一id。WSO2 ESB 4.8.1使用jdk 1.7,而添加到wso2esb-4.8.1\repository\components\lib中的jar已使用jdk 1.8编译。这可能是问题所在吗?提前谢谢。