logback - Flink 日志记录限制 : How to pass logging configuration to a flink job

标签 logback apache-flink logstash-logback-encoder

我有一个使用 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 配置被忽略并且日志不会发送到 < em>logstash。

我阅读了更多有关 flink 的日志记录机制的信息并遇到了 documentation on configuring logback .本文档中提到的步骤与一些额外的步骤一起工作正常,例如在 lib/文件夹中添加 logstash-logback-encoder lib 以及 logback jar。

尽管上面提到的步骤有效,但这是有问题的,因为 flink 使用的 flink/conf 文件夹中的 logback 配置适用于整个 flink 设置和在 flink 上运行的所有作业。作业不能有自己的日志记录配置。例如。我希望作业 1 写入文件控制台logstash,而作业 2 只写入文件

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

有没有办法强制 flink 在类路径上使用日志记录配置?

最佳答案

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

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

bin/flink run -m yarn-cluster -p 2 MyJobJar.jar

关于logback - Flink 日志记录限制 : How to pass logging configuration to a flink job,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53532798/

相关文章:

java - Logback - 在启动时删除日志文件

apache-kafka - Apache Flink 动态接收器数量

apache-kafka - Flink Kafka Stream 相对于 Spark Kafka Stream 的优势?和 Flink 上的 Kafka Stream?

apache-flink - 如何使用可查询状态客户端在 flink 中获取多个 keyBy 的状态?

spring-boot - 从 Spring Boot 使用 logback 无代理发送日志时,如何为 datadog 定义源标签?

spring-boot - Spring boot logback 到文件在 tomcat 上不起作用

java - Logback 1.7.1,JEE7 - insertFromJNDI 无法检索 appName

scala - 无法在 Play/Scala 中打印 LoggerContext

json - 如何将logstash logback encoder 的一些方法封装到一个内部字段中?

java - logstash-logback-encoder 在多行中显示堆栈跟踪