java 为什么PySpark日志记录器不记录INFO语句?

14ifxucb  于 2023-02-11  发布在  Java
关注(0)|答案(1)|浏览(188)

在下面的PySpark代码中,我试图确保记录INFO语句。但是,我只看到WARN、ERROR和FATAL消息。我如何更新日志记录器('Example Processor'),使其具有INFO日志级别,并将所有内容都记录下来?
注意:调试日志工作,并记录调试,信息,警告,错误和致命的一切。谢谢!

self.spark = SparkSession.builder \
        .master("local[1]") \
        .appName("DemoProcessor") \
        .getOrCreate()
    

    log4jLogger = self.spark.sparkContext._jvm.org.apache.log4j
    self.log = log4jLogger.LogManager.getLogger('Example Processor')

    self.log.setLevel(log4jLogger.Level.INFO)
    # self.log.setLevel(log4jLogger.Level.DEBUG)
    self.log.trace("Trace Message!")
    self.log.debug("Debug Message!")
    self.log.info("Info Message!")
    self.log.warn("Warn Message!")
    self.log.error("Error Message!")
    self.log.fatal("Fatal Message!")

INFO级别日志:

Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
23/02/09 17:22:44 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
23/02/09 17:22:44 WARN Example Processor: Warn Message!
23/02/09 17:22:44 ERROR Example Processor: Error Message!
23/02/09 17:22:44 FATAL Example Processor: Fatal Message!

调试级别日志:

Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
23/02/09 17:35:00 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
23/02/09 17:35:01 INFO Example Processor: Info Message!
23/02/09 17:35:01 DEBUG Example Processor: Debug Message!
23/02/09 17:35:01 WARN Example Processor: Warn Message!
23/02/09 17:35:01 ERROR Example Processor: Error Message!
23/02/09 17:35:01 FATAL Example Processor: Fatal Message!
wswtfjt7

wswtfjt71#

似乎日志级别没有为日志记录器'Example Processor'正确设置。在PySpark代码中,您尝试将日志级别设置为log4jLogger.Level.INFO,但没有生效。
需要检查的一件事是确保日志级别没有在代码的其他地方被覆盖。例如,如果脚本中有以下代码,它会将根日志记录器的日志级别设置为log4jLogger.Level.WARN:
日志管理器。获取根日志()。设置级别(日志管理器。警告)
这就解释了为什么您只看到WARN、ERROR和FATAL消息,即使您将“Example Processor”记录器的日志级别设置为log4jLogger.Level.INFO。
要解决此问题,您可以删除设置根记录器日志级别的行,或者将根记录器的日志级别设置为更详细的级别,例如log4jLogger.Level.DEBUG。

相关问题