0

我想打印mule配置文件名,在流的logger中,怎么获取呢?

假设 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>
4

6 回答 6

0

正如@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 ---

你好世界

于 2016-09-09T08:59:51.463 回答
0

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

于 2016-08-29T20:41:04.340 回答
0

试试这些表达式:

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

2)#[标题:原始文件名]

于 2016-09-01T06:15:18.677 回答
0

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

于 2016-09-02T11:01:46.203 回答
0
#[message.outboundproperties[originalFilename]]

试试这个表达。

于 2017-05-04T13:54:16.360 回答
0

[name.flow] 不正确。

你应该选择#[flow.name]正确的形式。不要被你的回答误导。

谢谢,

于 2016-08-30T09:08:31.573 回答