我一直在试图找到Spark的所有log4j属性的参考,并且很难找到它。我发现很多例子,人们看到它们有一些。但我试图看看是否有一个参考的地方有所有这些。有没有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到一个文件中(从蒂亚戈共享的链接略有修改)。
关键的东西我失踪了......
1)我需要包括log4j.logger.CLASS_NAME,我错过了log4j.logger位..
2)需要有log4j的。 additivity.CLASS_NAME =假。没有这个,它只会将INFO登录到默认设置。
起初很让人困惑,但是一旦你把图案放下,它就开始有点意义了。
谢谢Thiago,这是非常有帮助的。我已经注意到的一个挑战是日志输出到控制台,除非我设置根日志记录器。它似乎没有考虑所有火花噪声的文件记录覆盖。其中一些也是纱线的东西,我遇到的问题的一部分就是知道要调整哪个日志设置来控制它。例如,“INFO org.apache.spark.deploy.yarn.Client”出现在我的控制台上。我试着设置一些东西,比如log4j.logger.org.apache.spark.deploy.yarn.Client = WARN,这似乎没有做任何事情。有什么办法可以把它解决吗? –