问题描述
有谁知道如何更改“Kinesis Data Analytics for Apache Flink”应用程序的 CloudWatch 日志输出?
我想改变两件事:
- 写入到 CloudWatch 的 JSON 中的字段
- “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 应用程序代码内部启动时读取这些文件时,这两个文件似乎都是空的。
是否有一些相对直接的方法:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)