python – 为什么控制台记录器与print不同步?

python – 为什么控制台记录器与print不同步?,第1张

概述当我尝试使用print和控制台记录器在控制台上显示消息时,我偶然发现了以下令人惊讶的行为: import loggingfor i in range(1, 10): print("Hello")logging.warning("Hello world")# Possible result:HelloWARNING:root:Hello worldHelloHelloHe 当我尝试使用print和控制台记录器在控制台上显示消息时,我偶然发现了以下令人惊讶的行为:

import loggingfor i in range(1,10):    print("Hello")logging.warning("Hello world")# Possible result:HelloWARNING:root:Hello worldHelloHelloHelloHelloHelloHelloHelloHello# Expected result:HelloHelloHelloHelloHelloHelloHelloHelloHelloWARNING:root:Hello world

这怎么可能 ?

是否应该保证记录器在返回之前写入其输出流(无论是文件还是控制台)?

解决方法 这些是您的问题提出的几个不同的问题.首先,声明

logging.Formatter('{asctime} {name} {levelname:8s} {message}',style='{')

没有效果,因为您正在实例化Formatter然后丢弃结果.您需要将格式化程序分配给Handler,然后将其添加到Logger中.这一切都记录在Python stdlib documentation中.

其次,在您的示例中有两个不同的输出流 – 打印写入sys.stdout而logging.warning,没有其他配置,写入sys.stderr.这些流如何复用到单个控制台上的定义并不明确,取决于I / O缓冲的设置方式, *** 作系统和其他因素.

总结

以上是内存溢出为你收集整理的python – 为什么控制台记录器与print不同步?全部内容,希望文章能够帮你解决python – 为什么控制台记录器与print不同步?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1197526.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存