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

Posted

技术标签:

【中文标题】删除启动消息以更改 Spark 日志级别【英文标题】:Remove startup message to change Spark log level 【发布时间】:2019-10-18 13:18:18 【问题描述】:

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

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

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

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

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


我已经尝试过的:

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

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

log4j.properties 中设置 log4j.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).")


提前感谢您的帮助,

【问题讨论】:

【参考方案1】:

我找到了解决办法!

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

if (replLevel != rootLogger.getEffectiveLevel()) 
  if (!silent) 
     ...
  

这意味着可以在 log4j.properties 中将 replroot 记录器的日志级别设置为不同,而不是尝试更改 silent 变量,以实现结果相同:

log4j.rootCategory=WARN, console
log4j.logger.org.apache.spark.repl.Main=ERROR

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

【讨论】:

以上是关于删除启动消息以更改 Spark 日志级别的主要内容,如果未能解决你的问题,请参考以下文章

如何在运行时更改日志级别而不重新启动 Spring Boot 应用程序

怎么设置日志级别

Felix Scr 更改日志级别

如何以编程方式更改 root 日志记录级别以进行 logback

我可以在运行时更改 syslog 或 syslog-ng 日志级别吗?

Spark设置日志级别