删除启动消息以更改 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 中将 repl
和 root
记录器的日志级别设置为不同,而不是尝试更改 silent
变量,以实现结果相同:
log4j.rootCategory=WARN, console
log4j.logger.org.apache.spark.repl.Main=ERROR
您还可以添加 log4j.logger.org.apache.spark=ERROR
以删除 Spark 中可能出现的其他警告。
【讨论】:
以上是关于删除启动消息以更改 Spark 日志级别的主要内容,如果未能解决你的问题,请参考以下文章
如何在运行时更改日志级别而不重新启动 Spring Boot 应用程序
如何以编程方式更改 root 日志记录级别以进行 logback