You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flink 1.13.2版本如何从log4j(pre-Log4j2)升级为Log4j2

前置依赖调整

  • 首先移除Flink发行包lib目录下原有的Log4j 1.x相关依赖:log4j-1.2.x.jar、slf4j-log4j12-x.x.x.jar
  • 替换为Log4j2适配依赖,需要导入以下jar包到lib目录:
    • log4j-api-2.17.x.jar(推荐2.17.2及以上稳定版本,规避历史安全漏洞)
    • log4j-core-2.17.x.jar
    • log4j-slf4j-impl-2.17.x.jar(适配slf4j接口,替换原有slf4j-log4j12包)
    • log4j-1.2-api-2.17.x.jar(Log4j1兼容层,原有代码直接调用Log4j 1.x API的逻辑无需修改即可运行)

注意:Flink 1.13本身已原生兼容Log4j2,无需修改框架源码,仅替换依赖即可。如果是作业内部打包携带了日志依赖,需要在pom.xml中将原有log4j 1.x相关依赖设置为<scope>provided</scope>,避免依赖冲突。

配置文件迁移

  • 原有log4j.properties配置需要替换为Log4j2的配置文件,官方推荐使用log4j2.xml,放在Flink的conf目录下即可,优先级高于其他配置格式。
  • 常用配置对应关系:
    • 日志级别配置:原有log4j.rootLogger=INFO,file改为<Root level="INFO"><AppenderRef ref="file"/></Root>
    • 滚动文件Appender配置:原有DailyRollingFileAppender对应Log4j2的RollingFile加上TimeBasedTriggeringPolicy即可实现按天滚动,也支持按大小滚动的组合策略。
  • 如果不想重写配置,也可以用兼容转换工具直接将log4j.properties转换为log4j2.xml格式,转换后简单调整参数即可生效。

作业适配验证

  • 依赖和配置调整完成后,先启动本地单机Flink集群,运行测试作业,查看logs目录下是否正常生成日志文件,日志内容格式、滚动策略是否符合预期。
  • 重点检查原有自定义日志埋点的输出是否正常,无遗漏或格式错误。
  • 若是On YARN部署模式,需要将替换完依赖的Flink打包上传到YARN的分布式缓存,或者在作业提交参数中指定-yt参数上传lib目录下的新日志依赖,避免节点上原有旧依赖冲突。

常见问题排查

  • 如果启动时报ClassNotFoundException: org.apache.log4j.Logger,检查是否漏装了log4j-1.2-api兼容包。
  • 如果日志不输出,优先检查classpath下是否同时存在log4j 1.x和log4j2的依赖,出现冲突时可以在启动参数中加上-Dorg.apache.logging.log4j.debug=true查看日志初始化过程,定位冲突源。
  • 如果作业内部有自定义日志配置文件,需要确保配置文件命名为log4j2.xml,且放在作业jar包的根目录下,优先级高于集群全局配置。

内容的提问来源于stack exchange,提问作者user2456976

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:09:03