【问题标题】:Cloud Foundry - log4j2 - Incorporate App URI in logCloud Foundry - log4j2 - 在日志中合并应用程序 URI
【发布时间】:2018-09-26 10:56:55
【问题描述】:

我们正在登录到 Cloud Foundry 中的 splunk(通过 logreggator)。我们通过 slf4j 使用 log4j2。

我们已经在 log4j2 配置中指定了实例 UID 和索引:

<Console ...>
  ...
  <KeyValuePair key="@instanceGUID" value="${env:CF_INSTANCE_GUID:-unknown}" />
  ...
</Console>

有没有办法为空间/路线/池做类似的事情? 理想情况下,我们希望能够将 @space 包含在 dev、qa、uat 等值中,以及 pool: emea1、gb2 等值中。

在日志中捕获路由就足够了。

任何指针表示赞赏。

【问题讨论】:

    标签: java log4j2 cloud-foundry


    【解决方案1】:

    您可以从VCAP_APPLICATION 中提取空间名称。例如:echo $VCAP_APPLICATION | jq .space_name

    您还可以获得 URI/Routes,但可能有多个,因此我不确定您要记录的确切内容。例如:echo $VCAP_APPLICATION | jq '.uris | first' 会让你成为第一个。如果您不将多个路由绑定到您的应用程序,那可能就足够了...

    我不知道你说的池是什么意思。如果您指的是细胞,我不知道有什么方法可以做到这一点。您可以做的最好的事情是 Cell 的 IP,即CF_INSTANCE_IP

    您也可以随时添加自己的环境变量,以将更多信息合并到您的日志中。

    希望有帮助!

    【讨论】:

    • 谢谢丹尼尔。我可以阅读应用程序代码中的 URI,但我希望有一种方法可以利用 log4j2 中内置的 ${env:xxx} 处理。 Pool 只是 url 中地理区域说明符的一个术语。
    • 您可以将.profile 脚本添加到应用的根目录。此脚本将在您的应用程序之前运行。您可以在该脚本中执行类似APP_URL=$(echo $VCAP_APPLICATION | jq '.uris | first') 的操作。这将设置一个环境变量APP_URL,您可以从您的配置文件${env:APP_URL} 中访问它。
    • 谢谢丹尼尔。将您的答案标记为解决方案。
    猜你喜欢
    • 2017-06-27
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多