【问题标题】:Monitor or Log messages in Mule ESB在 Mule ESB 中监控或记录消息
【发布时间】:2013-12-14 19:47:46
【问题描述】:

我想记录或监控 Mule ESB 处理的消息负载。我使用了以下记录器。但它不会记录有效负载。

<logger message="#['Payload is:'+ payload]" level="DEBUG" />

【问题讨论】:

    标签: logging mule


    【解决方案1】:

    试试这个

    <logger message="Payload is #[message.payloadAs(java.lang.String)]" level="INFO" />
    

    希望这会有所帮助。

    【讨论】:

    • 这是最好的方法,因为它将使用 Mule 的自动转换能力将有效负载转换为字符串,而不仅仅是在其上调用 toString()。请注意,如果有效负载是输入流,则在此之后将被消耗,因此最好将流序列化为byte[]String,然后记录它并继续使用序列化类型处理它。
    【解决方案2】:
    <logger message="payload is : #[payload]" level="INFO" doc:name="Logger"/>
    

    也可以使用

    【讨论】:

    • 您好,我使用了您的解决方案。现在它是这样记录的。有效载荷是:[B@19e3bdb。它不记录消息。我正在尝试记录 SOAP 消息
    • 请添加您的完整要求或 mule 配置,以便我们提供更好的答案
    • @user3049576 可能你需要一个字节数组来串转换器。
    【解决方案3】:
    <logger level="DEBUG" doc:name="Logger" message="Payload is: #[message.payload]"/>
    

    当您看到如下内容时:B@19e3bdb 您看到的是消息负载是任何对象的默认字符串表示形式。

    它显然没有实现一个 toString 方法来格式化对象以供您按预期阅读。如果您将记录器更改为仅#[message],您将获得整个 mule msg,包括标题信息。其中应该有一个名为 payload 的道具,它会告诉你有效载荷的类名/类型。

    然后,您需要找到有关该类的一些文档或信息,并决定如何以一种可读的方式为您的记录器格式化其中的一部分。例如,如果您的类型有一个“名称”属性,它是一个字符串,您可以执行 #[message.payload.name] 来查看日志输出中的名称。

    【讨论】:

    • 您好,我也使用了您的解决方案。它也是这样记录的。有效载荷是:[B@19e3bdb。它不记录消息。我正在尝试记录 SOAP 消息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    相关资源
    最近更新 更多