为flink(slf4j)和spark(log4j)平台登录通用代码

lg40wkob  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(447)

我正在写一些应该在flink和spark平台上运行(作为jar)的代码。但是,这两个平台使用不同的日志api(flink使用log4j作为日志框架,而slf4j作为api)在这种情况下,登录公共代码的最佳实践是什么?
我尝试在这些常见代码中使用log4j2api,但它无法在flink中记录任何内容。
我现在的想法是尝试从slf4j上下文(已经由flink启动)获取log4japi的日志上下文,对吗?
谢谢

py49o6xq

py49o6xq1#

绝对安全的方法是使用共享库中的slf4j。因为slf4j是一个日志facade,所以不必强制用户使用与库中使用的日志框架相同的日志框架。请参见用户手册:
广泛分布的组件和库的作者可能会针对slf4j接口编写代码,以避免将日志框架强加给最终用户。因此,最终用户可以在部署时通过在类路径上插入相应的slf4j绑定来选择所需的日志框架,该slf4j绑定可以稍后通过用类路径上的另一个绑定替换现有绑定并重新启动应用程序来改变。这种方法已经被证明是简单和非常健壮的。

相关问题