有谁知道如何更改“Kinesis Data Analytics for Apache Flink”应用程序的 CloudWatch 日志输出。?
我想改变两点:
- 写入 CloudWatch 的 JSON 中的字段
- “消息”字段的内容/格式(即,每个“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 应用程序代码中读取它们时,这两个文件似乎都是空的。
是否有一些相对直接的方法:
- 将字段重命名/删除/添加到写入 CloudWatch 的 JSON?
- 更改“消息”字段的格式?