1

我正在构建一个用于在 Cloudhub 上部署的 Mulesoft/Anypoint 应用程序,出于诊断目的,我希望能够(从应用程序内部)确定它是在 Cloudhub 上运行,还是在本地开发机器上的 Anypoint Studio 中运行:

  • 在 Cloudhub 上,我想使用 Cloudhub 连接器为异常情况创建通知 - 但在本地使用该连接器会导致异常。
  • 在我的本地机器上,我想使用非常详细的日志并完全转储有效负载 ( #[message.payloadAs(java.lang.String)]),但希望在 Cloudhub 上使用更简洁的日志记录。

区分当前运行时的最佳方法是什么?我无法弄清楚任何公开此信息的自动系统属性。

(我意识到我可以设置我自己的属性,称为类似system.env=LOCAL并覆盖它以system.env=CLOUDHUB进行部署,但我很好奇平台是否已经以某种方式提供了这些信息。)

4

1 回答 1

1

据我所知,最好的方法是使用属性。只要您保持一致,您使用的特定名称和值并不重要。这是一个例子:

在本地开发环境中,设置以下属性mule-app.properties

system.environment=DEV

当您部署到 Cloudhub 时,使用部署工具将该属性更改为:

system.environment=CLOUDHUB

然后在您的消息处理器中,您可以引用此属性:

<logger 
    message="#['${system.environment}' == 'DEV' ? 'verbose log message' : 'concise log message']"        
    level="ERROR"
    doc:name="Exception Logger"
/>
于 2017-03-17T17:24:15.877 回答