【发布时间】:2018-03-28 11:18:51
【问题描述】:
我一直在尝试查找 Spark 的所有 log4j 属性的参考,但很难找到它。我发现了很多例子,人们看到有它的碎片。但我正在尝试查看某个地方是否有包含所有这些的参考。
对于我的特定用例,我正在编写一些代码,通过触发 spark-submit 作业来执行一系列数据转换,然后其他用户可以使用/扩展这些代码。默认情况下,我不需要火花吐出的大部分内容,只需设置 log4j.rootLogger=WARN,stdout 之类的内容就很容易。但是,INFO 中有一些有用的位可以打印到屏幕上。特别是:
org.apache.spark.deploy.yarn.Client (Logging.scala:logInfo(54)) -
client token: Token { kind: YARN_CLIENT_TOKEN, service: }
diagnostics: N/A
ApplicationMaster host: N/A
ApplicationMaster RPC port: -1
queue: ****
start time: 1508185983070
final status: UNDEFINED
tracking URL: ***My tracking URL***
user: ***User***
更具体地说是跟踪 URL。可能也是由于我对 Log4j 的了解有限,这使得这有点困难。我试过做类似的事情:
org.apache.spark.deploy.yarn.Client=Info
但这似乎不是合法的日志记录属性。有没有办法只在 Spark 中获取那条信息?查看所有可能要设置的日志记录属性是否有技巧?
谢谢!
更新
我能够弄清楚这一点。大部分是因为我不知道 log4j.properties 是如何工作的,但现在有了更好的处理。
您可以为每个类设置记录器和日志级别,并且持续到所有子类。
我将 log4j.properties 更改为如下所示:
log4j.logger.org.apache.spark=INFO, RollingAppender
log4j.additivity.org.apache.spark=false
log4j.logger.org.apache.hadoop=INFO, RollingAppender
log4j.additivity.org.apache.hadoop=false
log4j.logger.org.spark_project.jetty=INFO, RollingAppender
log4j.additivity.org.spark_project.jetty=false
log4j.logger.org.apache.spark.deploy.yarn.Client=INFO, RollingAppender
log4j.additivity.org.apache.spark.deploy.yarn.Client=false
这会将几乎所有 Spark on YARN 日志重定向到一个文件(根据 Thiago 共享的链接稍作修改)。
我错过的关键事情......
1) 我需要包含 log4j.logger.CLASS_NAME,我缺少 log4j.logger 位..
2) 需要 log4j.additivity.CLASS_NAME=false。如果没有这个,它只会将 INFO 记录到默认设置。
一开始这很令人困惑,但一旦你掌握了模式,就会开始变得有点意思。
【问题讨论】:
标签: apache-spark log4j