Kafka控制台消费者运行报错无法读取tools-log4j.properties配置文件求助
报错原因分析
1. log4j配置文件找不到的原因
你当前是在Windows系统的MINGW64(Git Bash)环境下运行Linux格式的.sh脚本,Java在解析MINGW传递的路径时出现格式兼容问题:MINGW传递的路径格式为/c/kafka_xxx/,Java会将其识别为\c\kafka_xxx\,丢失了盘符后的冒号,导致系统无法找到对应路径下的tools-log4j.properties配置文件。
2. --zookeeper参数不识别的原因
你使用的是Kafka 2.8.0版本,从Kafka 2.2版本开始,官方已经废弃了控制台消费者的--zookeeper参数,改为使用--bootstrap-server指定Kafka broker地址,2.8.0版本已经完全移除了--zookeeper参数的支持,因此直接报参数不识别错误。
解决方法
- 优先适配Windows环境执行脚本:不要在Git Bash中运行
.sh脚本,改用Windows原生的.bat脚本,在cmd或PowerShell中执行,可完全避免路径兼容问题 - 修正消费者命令参数,将
--zookeeper参数替换为--bootstrap-server,Kafka默认服务端口为9092,修正后的完整命令如下:
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic erjan --from-beginning
- 若坚持要在Git Bash中运行
.sh脚本,可在执行命令前手动指定log4j配置路径,解决配置找不到的问题:
export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:/C:/kafka_2.12-2.8.0/config/tools-log4j.properties" # 再执行修正参数后的消费者命令 ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic erjan --from-beginning
执行修正后的命令后,两个报错都会消失,可正常消费主题中的消息。
内容的提问来源于stack exchange,提问作者ERJAN
相关产品推荐
相关产品推荐

