Mule 4.6中使用<logger>组件调用substring函数报错的咨询
Mule 4.6 Logger打印字符串子串解决方案
正确实现方式
方式一:显式调用DataWeave字符串模块的substring函数
Mule 4.6中需要明确指定substring函数所属的核心模块,Logger配置如下:
<logger message="#[dw::core::Strings::substring(vars.topicDetails, 10, 50)]" level="INFO"/>
参数说明:
- 第一位参数为要截取的目标字符串
vars.topicDetails - 第二位是起始索引(从0开始,包含该位置)
- 第三位是结束索引(从0开始,不包含该位置),最终截取索引10到49的字符,共40个字符
方式二:使用DataWeave区间索引语法
这是更简洁的写法,直接通过索引区间截取子串:
<logger message="#[vars.topicDetails[10 to 49]]" level="INFO"/>
这里to表示闭区间,要截取到原字符串第50个字符(对应索引49),所以写10 to 49,效果和方式一完全一致。
原写法报错原因
- 直接写
substring(...)未指定dw::core::Strings模块,Mule无法自动解析该函数 - 用
vars.topicDetails.substring(...)是Java风格调用,但DataWeave不支持这种直接调用Java字符串方法的语法,必须使用DW自身的语法或函数
内容的提问来源于stack exchange,提问作者user25247044
相关产品推荐
相关产品推荐

