linux之为什么zookeeper不使用我的log4j.properties文件日志目录
在我的 zookeeper/conf/log4j.properties 文件中,我将 zookeeper.log.dir 设置为 $HOME/zklogs
当我使用 zkServer.sh 时,它不使用该目录。相反,它使用 ${ZOO_LOG_DIR} ,当我回应它时,它会变成“。”
我不明白如何解决这个问题,我在任何地方都没有看到 ${ZOO_LOG_DIR} 设置。我不确定它是如何设置为“.”的。一点也不。我也不知道如何在没有 zkServer.sh 的情况下启动 zookeeper。我对 linux 也很陌生,在这个问题上有点迷茫......
有人知道我该如何解决这个问题,以便它使用 conf 目录中我的 log4j.properties 文件中设置的目录吗?
***更新,我在我的 zookeeper 安装的 bin 目录中的 zkEnv.sh 中找到了。有代码:
if["x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="."
fi
我不确定第一行发生了什么,但一定是这里出了问题。我希望它从我的 log4j.properties 文件中查看 zookeeper.log.dir。谁能告诉我这是不是真的?我不想在这里硬连接路径...
请您参考如下方法:
我想补充一下我是如何解决这个问题/如何定制我的环境的。
这里有两种日志记录机制:
- 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 = . (启动 zookeeper 的工作目录)
- 在 conf/log4j.properties 中设置为 zookeeper.log.dir
- ZOO_LOG4J_PROP = 信息,控制台
- 在 conf/log4j.properties 中设置为 zookeeper.root.logger
打开日志附加器 CONSOLE 的效果是日志现在转到标准输出。因为 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文件创建、轮转、过期。
顺便说一句,conf/log4j.properties 显然已经在我的类路径中了。在这方面我不必做任何改变。
这条链对我的理解做出了重大贡献: https://groups.google.com/forum/#!msg/nosql-databases/aebIvNnT0xY/doky1X9-WfwJ
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。