ZooKeeper 3.5.4-beta重启截断日志问题及追加日志需求
解决ZooKeeper 3.5.4-beta重启时截断
zookeeper.out的问题 针对你遇到的每次重启ZooKeeper都会截断/var/log/zookeeper/instance/zookeeper.out的问题,我给你提供一个直接的解决方案,这个方法适配3.5.4-beta版本:
步骤1:修改ZooKeeper启动脚本
ZooKeeper的启动日志重定向逻辑写在zkServer.sh脚本里(默认路径一般是$ZOOKEEPER_HOME/bin/zkServer.sh,你可以根据自己的实际安装路径调整)。
打开这个脚本,找到包含zookeeper.out的启动命令行,你会看到类似这样的代码:
nohup "$JAVA" $ZOO_LOG4J_PROP "$ZOOMAIN" "$ZOOCFG" > "$ZOO_LOG_DIR/zookeeper.out" 2>&1 < /dev/null &
这里的>符号是覆盖式重定向,每次启动都会清空旧日志并写入新内容。你只需要把它改成追加式重定向的>>:
nohup "$JAVA" $ZOO_LOG4J_PROP "$ZOOMAIN" "$ZOOCFG" >> "$ZOO_LOG_DIR/zookeeper.out" 2>&1 < /dev/null &
步骤2:验证修改效果
保存脚本后,重启ZooKeeper服务,你会发现新的启动日志会追加到zookeeper.out的末尾,而不是清空原有内容。这样后续排查崩溃问题时,就能连贯查看之前的启动记录了。
额外建议
如果担心zookeeper.out文件随着时间变得过大,你可以配置logrotate工具来定期切割日志,比如按天或按文件大小轮转,避免单个日志文件体积过大影响读取和存储。
内容的提问来源于stack exchange,提问作者ale_tri
相关产品推荐
相关产品推荐

