将 Flink 1.10 升级到 Flink 1.11(Kubernetes 部署上的 Log4j)
Upgrade Flink 1.10 to Flink 1.11 (Log4j on kubernetes deployment)
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 Configuring Log4j1 Section,为了使用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's official documents中提到的步骤将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 集群并验证记录器并发现它正在工作。
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 Configuring Log4j1 Section,为了使用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's official documents中提到的步骤将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 集群并验证记录器并发现它正在工作。