Flink 日志记录限制:如何将日志记录配置传递给 Flink 作业
Flink logging limitation: How to pass logging configuration to a flink job
我有一个使用 logback 作为日志记录框架的 flink 作业,因为日志需要发送到 logstash 并且 logback 有一个 logstash appender (logstash-logback-appender)。 appender 工作正常,当 flink 作业是 运行 来自像 Eclipse 这样的 IDE 时,我可以在 logstash 中看到应用程序日志。日志记录配置文件 logback.xml 位于 src/main/resources 并包含在类路径中。即使 运行 从 IDE.
之外的命令行执行作业,日志记录也能正常工作
然而,当我通过 flink 仪表板在 flink 集群(独立的,开始使用 ./start-cluster.bat
)上部署这个作业时,logback 配置被忽略并且日志没有发送到 logstash.
我阅读了更多有关 flink 的日志记录机制的信息并遇到了 documentation on configuring logback。本文档中提到的步骤与一些额外的步骤一起工作正常,例如在 lib/ 文件夹中添加 logstash-logback-encoder
lib 以及 logback
jar。
尽管上面提到的步骤有效,但这是有问题的,因为 flink 使用的 flink/conf 文件夹中的 logback 配置适用于整个 flink 设置和所有flink 上的作业 运行ning。作业不能有自己的日志记录配置。例如。我希望作业 1 写入 file
、console
、logstash
并且作业 2 仅写入 file
.
如何为从仪表板启动的每个 flink 作业提供单独的日志记录配置?在仪表板上提交作业时,是否可以通过任何方式传递日志记录配置?
有没有办法强制 flink 在类路径上使用日志记录配置?
Flink 目前不支持为每个作业指定单独的日志记录配置。日志记录配置对整个集群始终有效。
解决此问题的一种方法是以每个作业模式启动作业。这意味着您为每个 Flink 作业启动一个专用的 Flink 集群。
bin/flink run -m yarn-cluster -p 2 MyJobJar.jar
我有一个使用 logback 作为日志记录框架的 flink 作业,因为日志需要发送到 logstash 并且 logback 有一个 logstash appender (logstash-logback-appender)。 appender 工作正常,当 flink 作业是 运行 来自像 Eclipse 这样的 IDE 时,我可以在 logstash 中看到应用程序日志。日志记录配置文件 logback.xml 位于 src/main/resources 并包含在类路径中。即使 运行 从 IDE.
之外的命令行执行作业,日志记录也能正常工作然而,当我通过 flink 仪表板在 flink 集群(独立的,开始使用 ./start-cluster.bat
)上部署这个作业时,logback 配置被忽略并且日志没有发送到 logstash.
我阅读了更多有关 flink 的日志记录机制的信息并遇到了 documentation on configuring logback。本文档中提到的步骤与一些额外的步骤一起工作正常,例如在 lib/ 文件夹中添加 logstash-logback-encoder
lib 以及 logback
jar。
尽管上面提到的步骤有效,但这是有问题的,因为 flink 使用的 flink/conf 文件夹中的 logback 配置适用于整个 flink 设置和所有flink 上的作业 运行ning。作业不能有自己的日志记录配置。例如。我希望作业 1 写入 file
、console
、logstash
并且作业 2 仅写入 file
.
如何为从仪表板启动的每个 flink 作业提供单独的日志记录配置?在仪表板上提交作业时,是否可以通过任何方式传递日志记录配置?
有没有办法强制 flink 在类路径上使用日志记录配置?
Flink 目前不支持为每个作业指定单独的日志记录配置。日志记录配置对整个集群始终有效。
解决此问题的一种方法是以每个作业模式启动作业。这意味着您为每个 Flink 作业启动一个专用的 Flink 集群。
bin/flink run -m yarn-cluster -p 2 MyJobJar.jar