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

如何升级Kafka 2.6.0中的slf4j-log4j12-1.7.25.jar与log4j-1.2.17.jar

升级Kafka 2.6.0中slf4j-log4j12与log4j Jar包的方案

由于你无法升级Kafka和ZooKeeper集群,只能通过替换单独的依赖Jar包完成升级,以下是具体步骤和注意事项:

1. 确认版本兼容性

  • slf4j-log4j12需与Kafka 2.6.0依赖的slf4j-api版本匹配:Kafka 2.6.0自带的slf4j-api是1.7.30,因此你可以升级slf4j-log4j12到1.7.x系列的最新稳定版(如1.7.36),该系列与1.7.30的slf4j-api完全兼容。
  • 针对log4j-1.2.17:官方已停止维护,但存在带安全补丁的修复版本(如log4j-1.2.17-cve-2021-4104.jar,修复了已知安全漏洞),优先选择这类版本而非单纯升级版本号。

2. 替换Jar包操作步骤

  • 停止Kafka服务:在每个节点执行停止命令,确保服务完全关闭:
    bin/kafka-server-stop.sh
    
  • 备份旧Jar包:进入Kafka安装目录的libs文件夹,备份目标Jar:
    cd /path/to/kafka/libs
    mkdir -p ../jar_backups
    cp slf4j-log4j12-1.7.25.jar log4j-1.2.17.jar ../jar_backups/
    
  • 删除旧Jar包:从libs中移除旧文件:
    rm slf4j-log4j12-1.7.25.jar log4j-1.2.17.jar
    
  • 添加新Jar包:将下载好的新版本Jar(如slf4j-log4j12-1.7.36.jar和安全补丁版log4j)复制到libs文件夹。
  • 同步ZooKeeper操作:如果ZooKeeper节点也使用了相同的日志Jar包,需对ZooKeeper的lib目录执行同样的备份、替换步骤,避免版本不一致引发问题。

3. 验证升级效果

  • 单节点测试启动:先启动一个Kafka节点,检查日志是否正常:
    bin/kafka-server-start.sh -daemon config/server.properties
    tail -f logs/server.log
    
    确认日志中无类找不到、初始化失败等报错,再启动其他节点。
  • 功能验证:运行简单的生产消费测试,确保服务功能不受影响:
    # 创建测试主题
    bin/kafka-topics.sh --create --topic test-upgrade --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
    # 启动生产者发送消息
    bin/kafka-console-producer.sh --topic test-upgrade --bootstrap-server localhost:9092
    # 新开终端启动消费者接收消息
    bin/kafka-console-consumer.sh --topic test-upgrade --bootstrap-server localhost:9092 --from-beginning
    
    确认消息能正常生产消费,日志无异常。

4. 关键注意事项

  • 无需修改log4j.properties配置:同系列版本(如slf4j 1.7.x、log4j 1.2.x)的配置文件完全兼容,无需调整。
  • 检查依赖冲突:使用jar -tf命令查看新Jar的类路径,确保与Kafka其他依赖无冲突,例如:
    jar -tf slf4j-log4j12-1.7.36.jar | grep "org/slf4j"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:45:12