ZooKeeper自定义数据日志目录

本文介绍了解决ZooKeeper启动时默认日志输出路径问题的方法,包括环境变量设置和脚本修改两种方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装版本: zookeeper-3.4.8
问题描述:
ZooKeeper在启动时会将zookeeper.out输出到当前目录,不仅不友好,有时候可能会因为目录权限问题引发一些不必要的麻烦。
脚本分析:
通过查看zkServer.sh脚本可以发现,脚本中没有定义 ZOO_LOG_DIR变量。
114 if [ -z "$ZOOPIDFILE" ]; then
115     ZOO_DATADIR="$($GREP "^[[:space:]]*dataDir" "$ZOOCFG" | sed -e 's/.*=//')"
116     if [ ! -d "$ZOO_DATADIR" ]; then
117         mkdir -p "$ZOO_DATADIR"
118     fi
119     ZOOPIDFILE="$ZOO_DATADIR/zookeeper_server.pid"
120 else
121     # ensure it exists, otw stop will fail
122     mkdir -p "$(dirname "$ZOOPIDFILE")"
123 fi
124 
125 if [ ! -w "$ZOO_LOG_DIR" ] ; then
126 mkdir -p "$ZOO_LOG_DIR"
127 fi
128 
129 _ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.out"
解决方案:
一、导出 ZOO_LOG_DIR环境变量
如:export ZOO_LOG_DIR=/opt/zookeeper-3.4.8/logs
二、完善zkServer.sh脚本
1.修改zoo.cfg文件,增加dataLogDir参数
如:
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
2.修改zkServer.sh脚本,增加 ZOO_LOG_DIR变量赋值
125 ZOO_LOG_DIR="$($GREP "^[[:space:]]*dataLogDir" "$ZOOCFG" | sed -e 's/.*=//')"
126 if [ ! -w "$ZOO_LOG_DIR" ] ; then
127 mkdir -p "$ZOO_LOG_DIR"
128 fi
129 
130 _ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.out"
以上方案,根据自己需要选择其中一个即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值