骡子:如何在logger中打印文件名?

时间:2016-08-29 07:32:07

标签: mule mule-studio mule-component mule-module-jpa

我想打印mule配置文件名,在流程的记录器中,我该如何获取它?

假设test.xml中的配置文件名,里面有一个流有记录器,打印 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>

6 个答案:

答案 0 :(得分:0)

应打印出您的应用程序名称,在您的情况下为“test”。但这不是xml文件的名称。 #[flow.name]将为您提供当前正在执行的流的名称。

答案 1 :(得分:0)

[name.flow]不正确。

你应该使用#[flow.name],这是正确的形式。不要误导你的答案。

谢谢,

答案 2 :(得分:0)

Try these expressions:

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

2) #[header:originalFilename]

答案 3 :(得分:0)

几天前我几乎做了同样的事情。 添加global element类型property placeholder,即可获得location: mule-deploy.properties。 在记录器中,使用${config.resources}。 如果只有一个配置文件,它将起作用。

答案 4 :(得分:0)

就像@dlb解释的那样,我也想知道你可能有更好的解决方案来满足你的要求,基本上我认为你想让日志更透明,更容易找到导致任何事件/错误的流程。

因此,记录流名称而不是配置文件名更有意义,配置文件名可能包含多个流。您可以使用日志组件中的类别来实现此目的:

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

在每个日志组件中(日志应该在重要的地方用于里程碑),在catagory中输入$ {application-prefix} .flowName(属性用于在所有日志中重用应用程序的名称,flowName应该是硬编码的),然后你会在运行时找到如下的日志:

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

Hello World

答案 5 :(得分:0)

#[message.outboundproperties[originalFilename]]

试试这个表达。