将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-core
、log4j-slf4j-impl
和log4j-1.2-api
jar - 将
log4j
、slf4j-log4j12
和log4j-to-slf4j
jar添加到lib目录中
将Flink-1.10.2升级到Flink-1.11.3后,我在Kubernetes
和DCOS(Mesos)
Flink集群中遇到了同样的问题。然后,为了进行交叉验证,我在本地下载了Flink的二进制文件flink-1.11.3-bin-scala_2.12.tgz
,并测试了记录器,发现它在没有任何更改的情况下工作。
Flink 1.11从Log4j1切换到Log4j2
-
然后我按照Flink官方文件中提到的步骤将Flink与Log4j1一起使用。
- 从
Flink's lib
目录中删除log4j-core
、log4j-slf4j-impl
和log4j-1.2-api
jar - 将
log4j
、slf4j-log4j12
和log4j-to-slf4j
jar添加到Flink's lib
目录中
- 从
-
重新启动
Kubernetes
和DCOS(Mesos)
Flink集群,并验证记录器并发现其正常工作。