【问题标题】:Locally change the log level for the zookeeper C client本地更改 zookeeper C 客户端的日志级别
【发布时间】:2016-05-14 17:23:27
【问题描述】:

我将 Apache Spark 的 spark-shell 与 mesos 和 zookeeper 一起使用,它似乎运行良好,只是我从 zookeeper 获得的日志记录比我想要的要多,这有点让人分心:

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.5.0
      /_/

Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_60)
Type in expressions to have them evaluated.
Type :help for more information.
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):ZOO_INFO@log_env@712: Client environment:zookeeper.version=zookeeper C client 3.4.6
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):ZOO_INFO@log_env@716: Client environment:host.name=myhost
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):ZOO_INFO@log_env@723: Client environment:os.name=Linux
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):ZOO_INFO@log_env@724: Client environment:os.arch=3.2.0-34-generic
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):ZOO_INFO@log_env@725: Client environment:os.version=#53-Ubuntu SMP Thu Nov 15 10:48:16 UTC 2012
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):ZOO_INFO@log_env@733: Client environment:user.name=myname
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):ZOO_INFO@zookeeper_init@786: Initiating client connection, host=localhost:9999 sessionTimeout=10000 watcher=0xffffffffff sessionId=0 sessionPasswd=<null> context=0x777777777777 flags=0
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):ZOO_INFO@check_events@1703: initiated connection to server [127.0.0.1:9999]
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):ZOO_INFO@check_events@1750: session establishment complete on server [127.0.0.1:9999], sessionId=0x11111111111111, negotiated timeout=10000
Spark context available as sc.
SQL context available as sqlContext.

scala>

我尝试过更改$SPARK_CONF_DIR/log4j.properties

log4j.logger.org.apache.zookeeper=WARN

这没有用,但自从mesos documentation mentions that the zookeeper logging goes directly to stderr 之后我并不感到惊讶:

注意:第 3 方日志消息(例如 ZooKeeper)仅写入标准错误!

将一个 jar 添加到 spark 的类路径中,该类路径有一个带有对 zookeeper C api function to change the log level 的外部函数接口调用的静态块,这似乎可行,但我不确定,而且我没有任何调用 C 的经验来自 JVM 的代码。

【问题讨论】:

    标签: logging apache-spark apache-zookeeper mesos


    【解决方案1】:

    除了,

    log4j.logger.org.apache.zookeeper=WARN
    

    将 stderr 日志级别配置为仅打印优先级为 ERROR(及以上)的日志

    # Send WARN or higher to stderr
    log4j.appender.stderr = org.apache.log4j.ConsoleAppender
    log4j.appender.stderr.Threshold = ERROR
    log4j.appender.stderr.Target = System.err
    

    LevelRangeFilter 也可能有用,如 here 所示。

    【讨论】:

    • 不,这对 zookeeper 的 ZOO_INFO 日志没有影响,这些日志仍在 stderr 上吐出。
    【解决方案2】:

    在这方面也找不到任何东西,但对于 JNI (Java-to-C) 可以提供 this。看起来zookeeper和mesos都没有可以使用的Web服务或shell(虽然zookeeper有zkshell,但在我们的例子中不可用)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多