删除启动消息以更改 Spark 日志级别

Vic*_*son 2 log4j python-3.x apache-spark pyspark

我正在使用 PySpark 运行 Python 脚本(和测试),并希望从日志中删除不相关的信息。

每次我启动它们时,控制台中都会显示以下消息:

将默认日志级别设置为“WARN”。

要调整日志记录级别,请使用 sc.setLogLevel(newLevel)。对于 SparkR,请使用 setLogLevel(newLevel)。

我怎样才能完全删除它?(最好在log4j.properties中)


我已经尝试过的:

我已经log4j.rootCategory=ERROR, console在log4j.properties中设置了。

sc.setLogLevel(newLevel)按照消息所述执行的操作仅适用于以下日志,而不适用于脚本的开头。

log4j.propertieslog4j.logger.org.apache.spark=ERROR中的设置不会删除该消息。

我对此进行了很多搜索,但找不到相关的配置。


Spark Github(在 Logging.scala 中),我可以看到有一个silent用于显示消息的变量,但我找不到它的更改位置:

if (!silent) {
  System.err.printf("Setting default log level to \"%s\".\n", replLevel)
  System.err.println("To adjust logging level use sc.setLogLevel(newLevel). " +
    "For SparkR, use setLogLevel(newLevel).")
}
Run Code Online (Sandbox Code Playgroud)

预先感谢您的任何帮助,

Vic*_*son 5

我找到了解决方案!

就在我从Logging.scala引用的代码之前,有:

if (replLevel != rootLogger.getEffectiveLevel()) {
  if (!silent) {
     ...
  }
}
Run Code Online (Sandbox Code Playgroud)

这意味着,不必尝试更改silent变量,而是可以在log4j.propertiesrepl中将和rootlogger 的日志级别设置为不同,以获得相同的结果:

log4j.rootCategory=WARN, console
log4j.logger.org.apache.spark.repl.Main=ERROR
Run Code Online (Sandbox Code Playgroud)

您还可以添加log4j.logger.org.apache.spark=ERROR以删除 Spark 中可能出现的其他警告。