我有一个flink工作,它使用logback作为日志框架,因为日志需要发送到logstash并且logback有一个logstash appender(logstash-logback-appender)。appender工作正常,当从像Eclipse这样的IDE运行flink作业时,我可以在logstash中看到应用程序日志。日志配置文件logback.xml放在src / main / resources中,并包含在类路径中。即使从IDE外部的命令行运行作业,日志记录也能正常工作。
但是,当我./start-cluster.bat通过flink仪表板在flink集群(独立,开始使用)上部署此作业时,将忽略日志记录配置,并且日志不会发送到logstash。
我阅读了有关flink日志记录机制的更多信息,并了解了有关配置logback的文档。本文档中提到的步骤可以正常使用一些额外的步骤,例如logstash-logback-encoder在lib /文件夹中添加lib以及logbackjar。
即使上面提到的步骤有效,这也是有问题的,因为flink使用的flink / conf文件夹中的logback配置适用于整个flink设置和flink上运行的所有作业。作业无法拥有自己的日志记录配置。例如。我想JOB1写入file,console,logstash和工作2写入只file。
如何从仪表板启动的每个flink作业都提供单独的日志记录配置?在仪表板上提交作业时,是否可以传递日志记录配置?
有没有办法强制flink在类路径上使用日志配置?
logback apache-flink logstash-logback-encoder
Flink目前不支持为每个作业指定单独的日志记录配置。日志记录配置始终对整个群集有效。
解决此问题的方法是以按作业模式启动作业。这意味着您可以为每个Flink作业启动一个专用的Flink集群。
bin/flink run -m yarn-cluster -p 2 MyJobJar.jar
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。