我正在尝试设置logback.xml,以便它包含与日志记录关联的JobName或JobId。
我还没有找到办法做到这一点。有可能吗?
最终我想要实现的是能够将日志发送到ElasticSearch并将JobName或Id标记为消息,以便我能够按作业进行过滤。
答案 0 :(得分:0)
我们最终做了以下,感觉超级hacky ,我们希望我们能找到更好的方法。
通过实现 ch.qos.logback.classic.selector.ContextSelector
将jar放入每个Flink TaskManagers类路径
修改每个flink TaskManage上的 FLINK_ENV_JAVA_OPTS_JM ,以指定您的上下文选择器。例如:
导出FLINK_ENV_JAVA_OPTS_JM =" -Dlogback.ContextSelector = your.custom.context.Selector"
重新启动所有任务管理器
测试它。
这是我们创建的ContextSelector的要点。如果你有任何改进,我会喜欢提出改进请求! Custom Flink Logback ContextSelector
这为每个JobID创建一个LoggerContext,然后使用JobID向TaskManager发出请求以获取JobName。然后它按"分拆JobName:"并将head组件放入LoggerContext Property" flink_job_name"并将尾部组件放入LoggerContext属性" flink_job_version"。