我想添加如何解决这个问题/定制我的环境。
这里有两个记录机制:
> bin / zkServer.sh将zookeeper服务器的stdout和stderr重定向到zookeeper.out
> log4j可以将日志追加到多个地方,包括:
> CONSOLE – 最终在zookeeper服务器的stdout和stderr
> ROLLINGFILE – 发送到zookeeper.log
bin / zkServer.sh使用:
> ZOO_LOG_DIR设置zookeeper.out和log4j的路径。
> ZOO_LOG4J_PROP设置log4j日志记录级别以及打开日志追加器
设置中的“最终”默认值conf / log4j.properties由zookeeper bash脚本组合设置:
> ZOO_LOG_DIR =。 (动物园管理员开始工作目录)
>在conf / log4j.properties里面设置为zookeeper.log.dir
> ZOO_LOG4J_PROP = INFO,CONSOLE
>在conf / log4j.properties里面设置为zookeeper.root.logger
打开日志追加器CONSOLE的效果是,日志现在转到stdout。因为bin / zkServer.sh将stdout和stderr重定向到zookeeper.out,log4j日志最终在zookeeper.out中。关闭ROLLINGFILE的效果是没有创建zookeeper.log文件。
zookeeper.out日志不会旋转。 zookeeper.log日志设置为旋转,可以设置为过期旧日志。
我希望日志滚动并过期。我必须做的第一件事是改变conf / log4j.properties以使旧的日志过期/删除。我通过在conf / log4j.properties里面设置log4j.appender.ROLLINGFILE.MaxBackupIndex来做到这一点。我要做的第二件事是设置日志目录,日志记录级别和追加者。
我有一个bash脚本运行每一分钟。如果看到zookeeper没有运行,它运行:
bin/zkServer.sh start
我改变它来指定bin / zkServer.sh预期的环境变量。
sudo ZOO_LOG_DIR=/opt/zookeeper-3.4.6/logs ZOO_LOG4J_PROP='INFO,ROLLINGFILE' /opt/zookeeper-3.4.6/bin/zkServer.sh start
关闭日志追加器CONSOLE的效果是log4j日志现在不再在zookeeper.out中结束。打开ROLLINGFILE的效果是,zookeeper.log文件被创建,旋转和过期。
BTW,conf / log4j.properties显然已经在我的类路径。我不得不在这方面做出改变。