无法更改zookeeper日志文件名

23c0lvtd  于 2022-12-09  发布在  Apache
关注(0)|答案(2)|浏览(209)

Zookeeper正在创建名为zookeeper-root-hostname.out的日志,但这是我的log4j.properties:

zookeeper.root.logger=INFO, CONSOLE
zookeeper.console.threshold=INFO

zookeeper.log.dir=.
zookeeper.log.file=zookeeper.log
zookeeper.log.threshold=INFO
zookeeper.log.maxfilesize=256MB
zookeeper.log.maxbackupindex=20

zookeeper.tracelog.dir=${zookeeper.log.dir}
zookeeper.tracelog.file=zookeeper_trace.log

log4j.rootLogger=${zookeeper.root.logger}

#
# console
# Add "console" to rootlogger above if you want to use this
#
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=${zookeeper.console.threshold}
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n

#
# Add ROLLINGFILE to rootLogger to get log file output
#
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold}
log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file}
log4j.appender.ROLLINGFILE.MaxFileSize=${zookeeper.log.maxfilesize}
log4j.appender.ROLLINGFILE.MaxBackupIndex=${zookeeper.log.maxbackupindex}
log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n

如果更改属性zookeeper.log.file=zookeeper.log,则会创建同名文件,如何更改日志的文件名?

  • 更新 *

我发现文件zkServer.sh设置了变量ZOO_LOG_FILE,并覆盖了在www.example.com中定义的值log4j.properties:

ZOO_LOG_FILE=zookeeper-$USER-server-$HOSTNAME.log

我可以修改此文件,但可以手动更改吗?

nxowjjhe

nxowjjhe1#

在典型的Java应用程序中,Zookeeper的日志记录情况非常复杂、定制,而且文档记录很差。但是建议您可以依赖您对第三方库log4j的现有知识,将其配置为通过其他第三方库SLF 4J进行代理。不要太糟糕,因为这种复杂的安排是常见的,因为许多流行的开源项目忽略了Java附带的内置日志记录框架,但稍后您会发现log4j.properties使用conf目录中的www.example.com文件实际上是doesn't work as expected,因为在提供的启动脚本中使用了自定义属性(zkServer.sh),它会覆写许多项目。
为了设置文件名,请注意,文件conf/log4j.properties包含以下变量分配,该分配被启动脚本(zkServer.sh)覆盖:

zookeeper.log.file=zookeeper.log

在外部设置环境变量,修改启动脚本或更新log4j.properties以不使用该变量:

#log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file}
log4j.appender.ROLLINGFILE.File=/the/actual/path/goes/here.log

您可能还希望启用ROLLINGFILE,如下所示:

#log4j.rootLogger=${zookeeper.root.logger}
log4j.rootLogger=INFO,ROLLINGFILE
smdnsysy

smdnsysy2#

搜索后,我找到了这个link,但我没有找到如何更改日志的变量,我注意到在文件www.example.com中zkServer.sh定义了文件的名称,因此我需要更改此变量:

_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper-$USER-server-$HOSTNAME.out"

我不知道是否可以更改该变量,但知道它按预期工作。

相关问题