首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >warnings.warn()与logging.warning()

warnings.warn()与logging.warning()
EN

Stack Overflow用户
提问于 2012-03-07 02:30:18
回答 3查看 37.2K关注 0票数 126

warnings.warn()logging.warn()在做什么和应该如何使用方面有什么不同?

EN

回答 3

Stack Overflow用户

发布于 2013-02-07 22:18:25

我同意另一个答案-- logging用于日志记录,warning用于警告--但我想补充更多细节。

下面是一个教程式的如何引导您完成使用logging模块的步骤。https://docs.python.org/3/howto/logging.html

它直接回答了你的问题:

库代码中的warnings.warn(),如果该问题是可以避免的,并且客户端应用程序应该被修改以消除警告 如果客户端应用程序无法处理这种情况,则logging.warning(),但仍应注意该事件

票数 128
EN

Stack Overflow用户

发布于 2016-06-22 23:14:26

logging.warning只是在WARNING级别记录一些东西,就像logging.infoINFO级别上记录和logging.errorERROR级别上记录一样。它没有什么特别的行为。

warnings.warn发出一个Warning,它可能被打印到stderr,完全忽略,或者像普通的Exception那样抛出(可能会使应用程序崩溃),这取决于发出的精确的Warning子类和如何配置警告筛选器。默认情况下,警告将打印到stderr或被忽略。

warnings.warn发出的警告通常很有用,但很容易被忽略(特别是当您在后台进程中运行Python程序而不捕获stderr时)。由于这个原因,记录它们可能会很有帮助。

Python提供了logging模块和warnings模块之间的内置集成,让您可以这样做;只要在脚本开始时调用logging.captureWarnings(True),那么由warnings模块发出的所有警告都将自动记录在WARNING级别。

票数 90
EN

Stack Overflow用户

发布于 2016-11-18 01:03:47

除了官方文件中的规范解释

库代码中的warnings.warn(),如果该问题是可以避免的,并且客户端应用程序应该被修改以消除警告 如果客户端应用程序无法处理这种情况,则logging.warning(),但仍应注意该事件

同样值得注意的是,默认情况下,warnings.warn("same message")只会出现一次。这是一个明显的重大差异。引用自官方医生

对于同一源位置的特定警告的重复通常被抑制。

代码语言:javascript
复制
>>> import warnings
>>> warnings.warn("foo")
__main__:1: UserWarning: foo
>>> warnings.warn("foo")
>>> warnings.warn("foo")
>>>
>>> import logging
>>> logging.warn("bar")
WARNING:root:bar
>>> logging.warn("bar")
WARNING:root:bar
>>> logging.warn("bar")
WARNING:root:bar
>>>
>>>
>>> warnings.warn("fur")
__main__:1: UserWarning: fur
>>> warnings.warn("fur")
>>> warnings.warn("fur")
>>>
票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9595009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档