升级Flink 1.10至Flink 1.11(kubernetes部署上的Log4j)



将Flink 1.10升级到Flink 1.11后,log4j配置不再工作。

我以前的配置是使用一个带有适配器的库,该适配器需要log4j 1.x,并且不再与Flink 1.11 兼容

根据新的配置,flink-conf.yaml应该看起来像这个

log4j-console.properties: |+
# This affects logging for both user code and Flink
rootLogger.level = INFO
rootLogger.appenderRef.console.ref = ConsoleAppender
rootLogger.appenderRef.rolling.ref = RollingFileAppender
# Uncomment this if you want to _only_ change Flink's logging
#logger.flink.name = org.apache.flink
#logger.flink.level = INFO

我当前使用log4j1的配置看起来与这个类似

log4j-console.properties: |+
log4j.rootLogger=INFO,myappender,console
log4j.appender.myappender=com.company.log4j.MyAppender
log4j.appender.myappender.endpoints=http://

有没有办法告诉Flink 1.11在Flink-conf.yaml文件中使用log4j1?

据我所知,flink-conf.yaml不包含log4j-console.properties部分,这是一个单独的文件。我想您指定的是flink-configuration-configmap.yaml集群资源定义的一部分。

根据flink配置Log4j1部分,为了使用Log4j1,您需要:

  • 从lib目录中删除log4j-corelog4j-slf4j-impllog4j-1.2-apijar
  • log4jslf4j-log4j12log4j-to-slf4jjar添加到lib目录中

将Flink-1.10.2升级到Flink-1.11.3后,我在KubernetesDCOS(Mesos)Flink集群中遇到了同样的问题。然后,为了进行交叉验证,我在本地下载了Flink的二进制文件flink-1.11.3-bin-scala_2.12.tgz,并测试了记录器,发现它在没有任何更改的情况下工作。

Flink 1.11从Log4j1切换到Log4j2

  • 然后我按照Flink官方文件中提到的步骤将Flink与Log4j1一起使用。

    1. Flink's lib目录中删除log4j-corelog4j-slf4j-impllog4j-1.2-apijar
    2. log4jslf4j-log4j12log4j-to-slf4jjar添加到Flink's lib目录中
  • 重新启动KubernetesDCOS(Mesos)Flink集群,并验证记录器并发现其正常工作。

最新更新