Python 中的logging.warn 和logging.warning 有什么区别?

问题描述 投票:0回答:2

http://docs.python.org/2/howto/logging.html 中的示例同时使用

warn
warning

python logging warnings python-logging
2个回答
159
投票
自 Python 3.3 起,

logging.warn
已被弃用,您应该使用
logging.warning

在 Python 3.3 之前,

logging.warn
logging.warning
是相同的函数,但
logging.warn
没有记录,如 Python bug 跟踪器中的已解决问题中所述 http://bugs.python.org/issue13235 :

这是故意的。原始代码(在并入 Python 之前)有 warn(),保留它是为了向后兼容。文档引用 warning() 因为这是每个人都应该使用的。方法名称映射到相应日志记录级别名称的小写字母。

保留

logging.warn()
是为了向后兼容,但添加了弃用警告
logging.warning()
是每个人都应该使用的。


45
投票

在 Python 3.3 之前,它们是相同的,但是

warn
已弃用:

>>> import logging
>>> logging.warn is logging.warning
True

现在它们不同了,

.warn
当然仍然被弃用

❯ python3
Python 3.12.2 (main, Feb  6 2024, 20:19:44) [Clang 15.0.0 (clang-1500.1.0.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import logging
>>> logging.warn
<function warn at 0x104d625c0>
>>> logging.warn is logging.warning
False
>>> logging.warning("foo")
WARNING:root:foo
>>> logging.warn("foo")
<stdin>:1: DeprecationWarning: The 'warn' function is deprecated, use 'warning' instead
WARNING:root:foo
© www.soinside.com 2019 - 2024. All rights reserved.