更改来自“Kinesis Data Analytics for Apache Flink”应用程序的 CloudWatch 日志输出

问题描述

有谁知道如何更改“Kinesis Data Analytics for Apache Flink”应用程序的 CloudWatch 日志输出

我想改变两件事:

  1. 写入到 CloudWatch 的 JSON 中的字段
  2. “message”字段的内容/格式(即每个“LOG.info”、“LOG.warn”等的格式 - 行)

#1 是最重要的。

写入 CloudWatch 的认格式如下所示:

{
  "locationinformation": "","logger": "","message": "","threadName": "","applicationARN": "arn:aws:kinesisanalytics:eu-west-1:...","applicationVersionId": "23","messageSchemaVersion": "1","messageType": "INFO"
}

是否可以以某种方式更改输出,以便每个 CloudWatch 条目都变成这样:

{
  “EventTime”: "20201224T23:59:59.999Z",“LogLevel”: 5,“EventSource”: "ApplicationURI/Name",“Message”: ”foobar”
}

这里提到了使用 SLF4J (https://docs.aws.amazon.com/kinesisanalytics/latest/java/cloudwatch-logs-writing.html),尽管在同一页面上提到的格式是上面描述的认格式。

Java 项目的 pom.xml 文件包含 aws-java-sdk-logs。它还排除了 log4j 和 slf4j。

  <artifactSet>
     <excludes>
       <exclude>org.slf4j:*</exclude>
       <exclude>log4j:*</exclude>
     </excludes>
  </artifactSet>

我看过这个: https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html 但是在本地测试时,更改 log4j.properties 会更改日志条目的“消息”字段。尽管存在于 .jar 文件的根目录中,但在 AWS 上运行时似乎并未加载该文件。即使我可以让 aws-java-sdk-logs 获取 log4j.properties 中的更改,更改此文件似乎也无法更改写入 CloudWatch 的 JSON 字段(仅“消息”格式)。

当应用程序在 AWS 上启动时,我可以看到它打印: -Dlog4j.configuration=file:/etc/flink/log4j-console.properties -Dlogback.configurationFile=file:/etc/flink/logback-console.xml 我希望可能在启动时复制它们,更改它们,并在将道具设置为指向 JAR 时包括它们。但是,当尝试从 Flink 应用程序代码内部启动时读取这些文件时,这两个文件似乎都是空的。

是否有一些相对直接的方法

  1. 向写入 CloudWatch 的 JSON 重命名/删除/添加字段?
  2. 更改“消息”字段的格式?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)