将日志记录添加到Python库
在本文中,我们将学习如何向库添加日志记录功能,但不希望它干扰不使用日志记录的程序。晓得博客向你介绍将日志记录添加到Python库方法。
日志记录添加到Python
对于想要执行日志记录的库,创建一个专用的记录器对象,并按照下面的代码所示对其进行初始配置
# abc.py
import logging
log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler())
# Example function (for testing)
def func():
log.critical('A Critical Error !')
log.debug('A debug message')
使用此配置,默认情况下不会发生日志记录。
import somelib
abc.func()
输出:
NO OUTPUT
如果配置了日志系统,日志消息将开始出现。
import logging
logging.basicConfig()
somelib.func()
输出:
CRITICAL:somelib:A Critical Error!
推荐:Python中的Self
它是如何工作的
库为日志记录带来了一个特殊的问题,因为有关使用它们的环境的信息是未知的。作为一般规则,永远不要编写试图自行配置日志系统或对已经存在的日志配置做出假设的库代码。
因此,需要非常小心地提供隔离。调用 getLogger(name) 会创建一个与调用模块同名的记录器模块。由于所有模块都是唯一的,因此这会创建一个可能与其他记录器分开的专用记录器。
log.addHandler(logging.NullHandler()) 操作将空处理程序附加到刚刚创建的记录器对象。默认情况下,空处理程序会忽略所有日志消息。
因此,如果使用库并且从未配置日志记录,则不会出现任何消息或警告。
推荐:[最新版]WordPress问答插件免费下载DW Question Answer Pro插件
独立配置库日志记录
可以独立配置各个库的日志记录,而不管其他日志记录设置如何,如下面给出的代码 –代码 #3:
import logging
logging.basicConfig(level = logging.ERROR)
import abc
print (abc.func())
Change the logging level for ‘abc’ only
logging.getLogger(‘abc’).level = logging.DEBUG
print (abc.func())
输出:
CRITICAL:abc:A Critical Error!
DEBUG:abc:A debug message
代码的时间复杂度是常数时间 O(1),因为没有循环或迭代。
代码的空间复杂度也是常量空间 O(1),因为使用的内存量不会随着输入的大小而增加。
Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折