smu*_*kes 25 linux apache log4j environment-variables apache-zookeeper
在我的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
Run Code Online (Sandbox Code Playgroud)
我不确定第一行发生了什么,但必须在这里出现问题.我希望它从我的log4j.properties文件中查看zookeeper.log.dir.任何人都可以告诉我这是否属实?我不想只是硬连接这里的道路......
Jef*_*ass 42
我想补充一下我如何解决这个问题/定制我的环境.
这里有2种日志记录机制:
bin/zkServer.sh使用:
设置conf/log4j.properties中的"最终"默认值由zookeeper bash脚本的组合设置:
打开日志追加器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来做到这一点.我要做的第二件事是设置日志目录,日志记录级别和appender.
我有一个每分钟运行一次的bash脚本.如果它看到zookeeper没有运行,它会运行:
bin/zkServer.sh start
Run Code Online (Sandbox Code Playgroud)
我将其更改为指定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
Run Code Online (Sandbox Code Playgroud)
关闭日志追加器CONSOLE的效果是log4j日志现在不再以zookeeper.out结尾.打开ROLLINGFILE的效果是zookeeper.log文件被创建,旋转和过期.
BTW,conf/log4j.properties显然已经在我的类路径中了.我不得不在这方面做出任何改变.
这一链条对我的理解做出了重大贡献:https: //groups.google.com/forum/#!msg/nosql-database/aebIvNnT0xY/doky1X9-WfwJ
zkServer.sh从zkEnv.sh
env文件获取它的环境变量设置一个包含log4j文件的类路径,如果它在预期的位置.
ZOOXFGDIR=ZOOBINDIR/../conf
我将一些回声放入zkServer.sh以追踪正在发生的事情.我发现正确设置了classpath,但是没有设置logdir和log4j_prop.所以我把它们添加到了zkEnv.sh.现在,日志似乎显示在预期位置.
ZOO_LOG_DIR="/var/log/zookeeper"
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22596 次 |
| 最近记录: |