问题描述
在WSO2 ESB中,我希望在日志序列的末尾打印属性中介者在服务链中设置的所有属性。 在不知道属性名称的情况下,是否有任何方便的方法?
谢谢
解决方法
有一个比实现自定义类介体更简单的方法。您可以为此使用脚本介体,并使用以下代码使用消息上下文中的值打印所有属性。它正在WSO2EI 6.6.0和WSO2ESB 4.9.0
上运行<script language="js"><![CDATA[var keySet = mc.getPropertyKeySet();
var i = 1;
var it = keySet.iterator();
while(it.hasNext()){
var prop = it.next();
java.lang.System.out.println(i + ": " + prop + " = " + mc.getProperty(prop));
i++;
}]]></script>
更新: 我发现,在Linux系统上,System.out.println不能很好地工作,因此您可以使用mc.getServiceLog()方法获取记录器以打印信息。
<script language="js"><![CDATA[
var keySet = mc.getPropertyKeySet();
var i = 1;
var it = keySet.iterator();
var log = "\n\r";
while(it.hasNext()){
var prop = it.next();
log += i + ": " + prop + " = " + mc.getProperty(prop)+"\n\r";
i++;
}
mc.getServiceLog().info(log);
]]></script>
,
我看不到这样做的直接方法。我发现一种解决方法是编写一个自定义类介体,您可以在其中获取属性键集作为消息上下文的一部分。