gpt4 book ai didi

Python 日志记录模块不遵守 setLevel 低于 '30'(警告)?

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:50 27 4
gpt4 key购买 nike

我在这里有点不知所措。我可以发誓上周早些时候我已经完成了这项工作。今天我又回到了它,但似乎无法让日志记录工作。

在下面的示例脚本中,我希望对我的问题进行相对完整的演示。

测试.py

import logging
logger = logging.getLogger()
print("Logger currently at level '{0}'".format(logger.getEffectiveLevel()))
logger.warning("Testing Warning")
logger.setLevel(60)
print("Logger currently at level '{0}'".format(logger.getEffectiveLevel()))
logger.error("Testing Error")
logger.setLevel(50)
print("Logger currently at level '{0}'".format(logger.getEffectiveLevel()))
logger.error("Testing Error")
logger.setLevel(40)
print("Logger currently at level '{0}'".format(logger.getEffectiveLevel()))
logger.error("Testing Error")
logger.setLevel(30)
print("Logger currently at level '{0}'".format(logger.getEffectiveLevel()))
logger.info("Testing Info")
logger.setLevel(20)
print("Logger currently at level '{0}'".format(logger.getEffectiveLevel()))
logger.info("Testing Info")
logger.setLevel(10)
print("Logger currently at level '{0}'".format(logger.getEffectiveLevel()))
logger.info("Testing Info")
logger.setLevel(0)
print("Logger currently at level '{0}'".format(logger.getEffectiveLevel()))
logger.info("Testing Info")

输出

Logger currently at level '30'
Testing Warning
Logger currently at level '60'
Logger currently at level '50'
Logger currently at level '40'
Testing Error
Logger currently at level '30'
Logger currently at level '20'
Logger currently at level '10'
Logger currently at level '0'

考虑到我使用的是 this,我不知道为什么日志记录模块的行为不同。官方文档来尝试实现它。您可以在接近尾声时看到它如何公然忽略 logger 的级别。我是否以某种方式绕过 logger 而是针对默认值进行记录?我不明白。

谢谢!

最佳答案

您忘记向记录器添加处理程序。在 Python 3.3(及更高版本)上,如果未指定处理程序,则内部 "handler of last resort" ,其级别为 WARNING,已被使用。因此,即使您的消息是通过记录器发送的,它们也会被内部处理程序丢弃(仅用于捕获错误配置)。在 Python 2.x 上,您会收到打印到 stderr 的一次性消息 - 找不到记录器“root”的处理程序

如果你加一行

logger.addHandler(logging.StreamHandler())

在第一次打印之前,你会得到这样的行为:

Logger currently at level '30'
Testing Warning
Logger currently at level '60'
Logger currently at level '50'
Logger currently at level '40'
Testing Error
Logger currently at level '30'
Logger currently at level '20'
Testing Info
Logger currently at level '10'
Testing Info
Logger currently at level '0'
Testing Info

更新:无需“手动添加处理程序”——这只是说明问题所在的最简单方法。您可以使用 basicConfig() 简单地配置日志记录(控制台或文件,有限的选项)或使用 dictConfig()配置更灵活。这些方法在 Python 2.7 和 3.2(及更高版本)中以相同的方式工作。

关于Python 日志记录模块不遵守 setLevel 低于 '30'(警告)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com