【问题标题】:Cannot change zookeeper log filename无法更改 zookeeper 日志文件名
【发布时间】:2020-08-03 02:14:17
【问题描述】:

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 并覆盖了 log4j.properties 中定义的值:

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

我可以修改这个文件,但是可以手动修改吗?

【问题讨论】:

标签: log4j apache-zookeeper


【解决方案1】:

在典型的 Java 应用程序方式中,Zookeeper 的日志记录情况非常复杂、自定义且文档记录不充分。官方管理员手册logging section 是一小段信息,几乎为零,但建议您可以依靠您对第三方库 log4j 的现有知识,该第三方库配置为通过其他第三方库 SLF4J 进行代理。这实际上不会太糟糕,因为这种复杂的安排很常见,因为许多流行的开源项目忽略了 Java 附带的内置日志框架,但稍后你会发现实际上使用了 conf 目录中的 log4j.properties 文件@ 987654322@,因为在提供的启动脚本 (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

【讨论】:

    【解决方案2】:

    搜索后我找到了这个link但是我没有找到如何更改日志的变量,我注意到文件zkServer.sh里面定义了文件的名称,所以我需要更改这个变量:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多