复制
收藏
提问
全网

python logging莫名其妙打印到stderr?

5月前
全网
文档
学术
百科
知识库
时间不限
自动

理解问题python logging莫名其妙打印到stderr?

已完成理解python logging莫名其妙打印到stderr?

展开阅读网页

Python的logging模块默认情况下会将日志输出到stderr,这是由于logging模块的StreamHandler类默认行为所决定的。StreamHandler类位于核心logging包中,它可以将日志记录输出发送到数据流,如sys.stdoutsys.stderr或任何文件型对象,这些对象需要支持write()flush()方法815

在Python中,sys.stderr是用于错误消息的标准错误流,而sys.stdout是用于普通输出的标准输出流12。如果logging模块没有被显式配置,或者没有设置StreamHandler,那么它将默认使用sys.stderr作为输出目标23。这意味着,如果没有特别指定,所有的日志信息,包括错误和普通消息,都会被发送到stderr

此外,如果库的应用程序没有使用日志,并且库代码调用日志进行记录,那么严重性为WARNING和更高级别的事件将被打印到sys.stderr,这被认为是最好的默认行为11。这也解释了为什么在某些情况下,日志信息会莫名其妙地打印到stderr

如果你希望改变日志的输出行为,可以通过配置logging模块来实现。例如,可以设置一个FileHandler来将日志输出到文件,或者通过修改StreamHandler的实例来改变输出目标。此外,还可以通过自定义流来同时将日志信息输出到屏幕和文件,这可以通过将sys.stdout替换为自定义流来实现,这样就不会影响控制台的输出,同时又能将输出内容保存到文件中1314

总之,Python的logging模块默认将日志输出到stderr,这是由于StreamHandler的默认行为。如果需要改变这一行为,可以通过配置logging模块来指定不同的输出目标或使用自定义流。14567910

更简洁一些
转笔记
简洁
python logging莫名其妙打印到stderr?
Python logging配置详解
Python logging模块使用教程
如何自定义Python logging输出格式
相关内容15

logging模块默认使用sys.stderr1

默认日志输出 logging模块默认将日志输出到stderr。

StreamHandler类发送日志到流2

StreamHandler功能 StreamHandler类将日志发送到sys.stdout或sys.stderr等流。

logging.StreamHandle默认输出到stderr3

StreamHandle默认设置 Python中logging.StreamHandle默认输出日志到stderr。

日志默认输出到stderr需关键词过滤4

日志输出过滤 默认所有日志输出到stderr,需根据关键词进行过滤。

logging.basicConfig()打印到stderr5

basicConfig配置 使用logging.basicConfig()时,默认打印消息到stderr。

库代码日志记录默认行为11

库代码日志行为 若应用程序不使用日志,库代码记录的严重性WARNING及以上事件将打印到stderr。

logging模块1

默认日志输出 logging模块默认使用StreamHandler,输出到stderr。

StreamHandler类8

日志输出处理 位于核心logging包,发送日志到sys.stdout, sys.stderr或文件对象。

sys.stderr4

错误日志输出 如果不设置StreamHandler,日志默认输出到stderr中。

logging.basicConfig()5

日志配置函数 设置基本配置后,日志消息打印到stderr。

自定义日志流13

日志流自定义 通过替换sys.stdout实现日志记录功能,不影响控制台输出。

StreamHandler2

日志输出处理 StreamHandler类负责将日志输出到数据流,如sys.stdout或sys.stderr。

sys.stderr4

默认错误日志输出 Python logging模块默认将所有日志输出到stderr中。

logging.basicConfig()5

日志配置函数 用于设置日志的基本配置,可以指定日志输出格式和目的地。

CustomStream13

自定义日志流 通过替换sys.stdout,可以在不影响控制台输出的同时,将日志保存到文件。

在线客服