如何在火花中更改日志级别?



我尝试了所有这些方法,但没有任何效果:

在 log4j 文件中 -

log4j.logger.org=OFF
log4j.rootCategory=ERROR, console
log4j.rootCategory=OFF, console

在代码中:

#option 1
Logger.getLogger("org.apache.spark").setLevel(Level.OFF)
#option 2
sparkContext.setLogLevel("OFF")
#option 3
val rootLogger: Logger = Logger.getRootLogger()
rootLogger.setLevel(Level.OFF)

是的,还尝试将其放在火花上下文对象之后。似乎没有任何效果。
我错过了什么? 或者有没有其他方法可以设置日志级别?

你可以从一开始就找到这些日志,这意味着我们需要通过logback而不是log4j来设置日志配置。

SLF4J
:类路径包含多个 SLF4J 绑定。 SLF4J: 在 [jar:file:/C:/Users/linzi/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] 中找到绑定 SLF4J: 在 [jar:file:/C:/Users/linzi/.m2/repository/org/slf4j/slf4j-log4j12/1.7.26/slf4j-log4j12-1.7.26.jar!/org/slf4j/impl/StaticLoggerBinder.class] 中找到绑定 SLF4J:有关解释,请参阅 http://www.slf4j.org/codes.html#multiple_bindings。 SLF4J:实际绑定的类型为 [ch.qos.logback.classic.util.ContextSelectorStaticBinder]

添加为logback.xml设置如下:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<logger name="com.mkyong" level="debug" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<root level="error">
<appender-ref ref="CONSOLE"/>
</root>

如果在创建对象之前声明日志级别,这应该会将日志级别更改为 OFF,SparkSession

import org.apache.log4j.{Level, Logger}
Logger.getLogger("org").setLevel(Level.OFF)
val spark = SparkSession.builder().appName("test").master("local[*]").getOrCreate()

你应该能够用这样的东西来做到这一点:

spark = SparkSession.builder.getOrCreate();
spark.sparkContext().setLogLevel("OFF");

https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/SparkContext.html#setLogLevel-java.lang.String-

你能分享其余的代码以及你在哪里运行它吗?

最新更新