Flink日志记录限制:如何将日志记录配置传递给Flink作业

时间:2018-11-29 06:06:08

标签: logback apache-flink logstash-logback-encoder

我有一个flink作业,它使用logback作为日志框架,因为需要将日志发送到logstash,并且logback具有logstash附加程序( logstash-logback-appender )。当从诸如Eclipse之类的IDE运行flink作业时,附加程序运行良好,并且可以在logstash中看到应用程序日志。日志配置文件 logback.xml 放在 src / main / resources 中,并包含在类路径中。即使从IDE外部的命令行运行作业,日志记录也可以正常工作。

但是,当我通过flink仪表板在flink集群(独立的,使用./start-cluster.bat开始的)上部署此作业时,将忽略logback配置,并且日志不会发送到 logstash 。< / p>

我详细了解了flink的日志记录机制,并遇到了documentation on configuring logback。本文档中提到的步骤可以与其他一些步骤配合使用,例如将logstash-logback-encoder lib与logback jars一起添加到lib /文件夹中。

即使上述步骤可行,这也是有问题的,因为flink使用的 flink / conf 文件夹中的logback配置适用于整个flink设置以及在flink上运行的所有作业。作业不能具有自己的日志记录配置。例如。我希望job1写入fileconsolelogstash,而job 2仅写入file

如何为从仪表板启动的每个flink作业提供单独的日志记录配置?在仪表板上提交作业时,可以通过任何方式传递日志记录配置吗?

是否有某种办法迫使flink在类路径上使用日志记录配置?

1 个答案:

答案 0 :(得分:2)

Flink当前不支持为每个作业指定单独的日志记录配置。日志记录配置对于整个集群始终有效。

解决此问题的一种方法是在每个作业模式下启动作业。这意味着您将为每个Flink作业启动一个专用的Flink群集。

bin/flink run -m yarn-cluster -p 2 MyJobJar.jar
相关问题