簡體   English   中英

ule子:如何在記錄器中打印文件名?

[英]Mule: How to print the file name in logger?

我要打印the子配置文件的名稱,在流程的記錄器中,如何獲取它?

假設在test.xml中的配置文件名中,有一個流程包含logger,該文件打印test.xml ,我怎么能得到這個?

<flow name="filenameFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/Hello" doc:name="HTTP"/>
    <logger message="#[app.name.toString()]" level="INFO" doc:name="Logger"/>
</flow>

應打印出您的應用程序名稱,以防萬一。 但是,這不是xml文件的名稱。 #[flow.name]將為您提供當前正在執行的流的名稱。

[name.flow]不正確。

您應該使用正確格式的#[flow.name] 不要誤解您的答案。

謝謝,

嘗試以下表達式:

1)#[message.outboundProperties ['originalFileName']]

2)#[header:originalFilename]

幾天前我做了幾乎相同的事情。 添加一個類型為property placeholderglobal element ,並指定location: mule-deploy.properties 在記錄器中,使用${config.resources} 如果只有一個配置文件,它將起作用。

就像@dlb解釋的那樣,我也想知道您是否可以為您的需求提供更好的解決方案,基本上我假設您想使日志更加透明,並更容易找到引起任何事件/錯誤的流程。

因此,記錄流名稱而不是可能包含多個流的配置文件名稱更有意義。您可以在日志組件中使用類別來實現此目的:

<logger level="INFO" category="${application-prefix}.myMainFlow" doc:name="Logger" message="#['payload is ---\n' + payload]"/>

在每個日志組件中(應該在重要的里程碑中使用日志),在目錄中輸入$ {application-prefix} .flowName(屬性用於在所有日志中重用應用程序的名稱,並且應對flowName進行硬編碼),然后您將在運行時中找到類似以下的日志:

INFO  2016-09-07 17:00:27,566 [[test].HTTP_Listener_Configuration.worker.01] com.myOrg.myApp.myMainFlow: payload is ---

你好,世界

#[message.outboundproperties[originalFilename]]

試試這個表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM