在 catchexceptionstrategy 中覆盖日志中的有效负载

Overwrite payload in the logs inside catchexceptionstrategy

我已启用 "Log Exceptions" 以防出现以下捕获异常策略。我在这里设置有效载荷,但仍在日志中打印原始有效载荷。我如何拦截它并将其设置为 Flow 变量的值。下面是我的捕获异常策略和日志消息。我想对任何运行时异常执行此操作。在此先感谢您的帮助。

 <catch-exception-strategy  doc:name="500">
        <message-properties-transformer doc:name="Message Properties">
                <add-message-property key="http.status" value="500"/>
                <add-message-property key="Content-Type" value="application/json"/>
            </message-properties-transformer>
            <set-payload value="#[flowVars.maskedCCPayloadVar]" mimeType="application/json" doc:name="Set maskedCCPayloadVar"/>
 </catch-exception-strategy>

日志消息

org.mule.exception.CatchMessagingExceptionStrategy:


Message               : Execution of the expression "payload/test" failed. (org.mule.api.expression.ExpressionRuntimeException).
Payload               : {
  "Request": {
    "CardDetails": {     
      "CardNumber": "5123456789012346",
      "ExpiryDate": "0521"
    },
    "AccountId": "12345678"
  }
}

使用 setpayload 组件或 dataweave 在您的捕获异常策略中设置有效载荷。

Log exception 将记录导致调用 catch exception 策略的异常

如果您想在日志中记录其他内容,您可以使用异常策略块中的 Logger 消息处理器,例如 <logger message="Error message #[exception.getMessage()] level="ERROR" />。此外,如果你想抑制 mule 中的默认错误日志,你可以禁用 catch 异常策略块上的 "Log Exceptions"。