2017-07-20 7 views
0

私はDWでサーバとモールのバージョン情報にアクセスしようとしていますが、私は以下のメッセージを受け取ります。Data weaveのサーバとラバのコンテキストオブジェクトにアクセスする

DWLは以下のようになります。私が下に間違いをしている場合は、私に知らせてください。私はそれにアクセスするために両方の構文を試しました。

%dw 1.0 
%output application/json 
--- 
{ 
errorType : payload.errorType, 
env: server['host'], 
host: server['host'], 
ip: server['ip'], 
javaVersion: server['javaVersion'], 
javaVendor: server['javaVendor'], 
osName: server['osName'], 
osVersion: server['osVersion'], 
muleVersion: mule.version, 
clusterId: mule.clusterId, 
nodeId: mule.nodeId 
} 

Message    : Exception while executing: 
env: server['host'], 
    ^
There is no variable named 'server'. 
Payload    : {correlationId=046b6c7f-0b8a-43b9-b35d-6489e6daee91, message=This is the test message to test structured log, errorType=ERROR, applicationName=common wrappers - logging wrapper} 
Payload Type   : java.util.HashMap 
Element    : /wrapper-logger/processors/1 @ common-wrappers:wrapper-logger.xml:16 (Transform Message) 
Element XML   : <dw:transform-message doc:name="Transform Message" metadata:id="38c29630-7d7c-48fc-a692-2407d0105cab"> 
         <dw:input-payload doc:sample="sample_data\list_HashMap.dwl"></dw:input-payload> 
         <dw:set-payload>%dw 1.0%output application/json---{errorType : payload.errorType,env: server['host'],host: server['host'],ip: server['ip'],javaVersion: server['javaVersion'],javaVendor: server['javaVendor'],osName: server['osName'],osVersion: server['osVersion'],muleVersion: mule.version,clusterId: mule.clusterId,nodeId: mule.nodeId,applicationName : payload.applicationName,correlationId: payload.correlationId,correlationSequence: "To be decided",correlationGroupSize: 5,timeZone: server.timeZone,timeStamp: server.dateTime,muleFlow: "get-user-record",stackTrace: "A complete Stack Trace",message: payload.message}</dw:set-payload> 
         </dw:transform-message> 
-------------------------------------------------------------------------------- 
Root Exception stack trace: 
com.mulesoft.weave.mule.exception.WeaveExecutionException: Exception while executing: 
env: server['host'], 
    ^
There is no variable named 'server'. 
    at com.mulesoft.weave.mule.exception.WeaveExecutionException$.apply(WeaveExecutionException.scala:10) 

答えて

0

グローバル機能を定義してサーバーの詳細を取得し、それをdataweaveから呼び出すことができます。 dataweave

{ 
    ip: getServerDetails()[0], 
    host: getServerDetails()[1], 
    osName: getServerDetails()[2], 
    osVersion: getServerDetails()[3], 
    javaVersion: getServerDetails()[4], 
    javaVendor: getServerDetails()[5] 
} 
+0

から呼び出す

<configuration doc:name="Configuration"> <expression-language> <import class = "org.mule.util.NetworkUtils"/> <import class="java.lang.System" /> <global-functions> def getServerDetails() { String ip = NetworkUtils.getLocalHost().getHostAddress(); String name = NetworkUtils.getLocalHost().getHostName(); String osName = System.getProperty("os.name"); String osVersion = System.getProperty("os.version"); String javaVersion = System.getProperty("java.version"); String javaVendor = System.getProperty("java.vendor"); return [ip, name, osName, osVersion, javaVersion, javaVendor]; } </global-functions> </expression-language> </configuration> 

はあなたにアブヘイをありがとうございます。これはロギングコンポーネントで使用されるため、頻繁に使用されます。ロギングコンポーネントのフローが開始されているときにこれを一度だけインスタンス化できますか?ロギングコンポーネントはVMキューからデータを読み取り、各メッセージを処理し、VMキューからメタデータとともにログに記録します。それはたくさんのメッセージを処理するでしょうから、どうすればそれを効果的にすることができますか?これらのクラスを直接DWヘッダにインポートして使用しますか?ありがとうございました。 –

+0

Javaクラスをデータ・ウィーブにインポートする方法はないと思っています。あなたはインスタンス化することによって意味ですか? – Abhay

関連する問題