一. 配置zookeeper.out的位置及log4j滚动日志输出
如果采用默认的设置(网上的大部分教程),会出现两个问题:
- zookeeper.out 日志文件会在启动 ZooKeeper 的本地产生,不便于管理
- zookeeper.out 日志文件会越来越大,笔者所在集群中该日志已达到 34G …
在 zkServer.sh 的代码中可以得出,这个zookeeper.out实际上是nohup的输出。而nohup的输出实际上是stdout,stderr的输出,所以还是zookeepe本身的日志配置的问题。
研究了下bin/zkServer.sh和conf/log4j.properties,发现zookeeper其实是有日志相关的输出的配置,只要定义相关的变量就可以了。主要是 ZOO_LOG_DIR 和 ZOO_LOG4J_PROP 这两个环境变量。
zkServer.sh里的:
log4j.properties里的:
而zkServer.sh会加载zkEnv.sh。因此,其实修改下bin/zkEnv.sh就可以了: