执行zookeeper-server-start启动Zookeeper报Error opening log file错误
Kafka启动Zookeeper报GC日志路径不存在错误解决方法
报错场景
按照Kafka官方快速入门流程操作,启动Zookeeper时直接抛出JVM启动失败错误,核心报错信息如下:
[0.002s][error][logging] Error opening log file '/g/kafka_2.13-3.2.0/bin/../logs/zookeeper-gc.log': No such file or directory [0.002s][error][logging] Initialization of output 'file=/g/kafka_2.13-3.2.0/bin/../logs/zookeeper-gc.log' using options 'filecount=10,filesize=100M' failed. Invalid -Xlog option '-Xlog:gc*:file=/g/kafka_2.13-3.2.0/bin/../logs/zookeeper-gc.log:time,tags:filecount=10,filesize=100M', see error log for details. Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
分别在安装Java 17、Java 18且正确配置JAVA_HOME的设备上测试,都会稳定复现这个问题,和Java大版本没有关系。
根本原因
Kafka 3.2.0的二进制压缩包解压后,根目录默认不会自带logs文件夹,但是Zookeeper启动脚本里提前写死了GC日志要输出到这个目录下。JVM启动时初始化GC日志配置,发现目标目录不存在,不会自动创建目录,直接终止启动流程抛出错误。
解决步骤
- 先进入Kafka的解压根目录,也就是报错路径里的
/g/kafka_2.13-3.2.0/位置,手动新建一个名为logs的空文件夹
Windows环境可以直接在资源管理器右键新建文件夹,也可以在命令行执行:
Linux/macOS环境在终端执行:mkdir G:\kafka_2.13-3.2.0\logsmkdir -p /你的Kafka存放路径/kafka_2.13-3.2.0/logs - 回到Kafka根目录,重新执行Zookeeper启动命令即可正常拉起服务
*注意:执行启动命令时不要随意切换工作目录,避免相对路径定位失效,推荐直接在Kafka根目录下执行对应命令:
Windows环境:
Linux/macOS环境:bin\windows\zookeeper-server-start.bat config\zookeeper.propertiesbin/zookeeper-server-start.sh config/zookeeper.properties
额外排查项
如果创建完logs目录还是报同类错误,检查两个点:
- 当前操作系统登录的用户,对Kafka所在目录有没有写入权限,比如Windows下放在C盘Program Files目录触发系统权限拦截、Linux下用普通用户操作root创建的Kafka目录
- 有没有手动修改过启动脚本里的GC日志路径配置,确保配置的路径是真实存在的
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

