将日志记录添加到Python库

将日志记录添加到Python库

将日志记录添加到Python库

  在本文中,我们将学习如何向库添加日志记录功能,但不希望它干扰不使用日志记录的程序。晓得博客向你介绍将日志记录添加到Python库方法。

  推荐:Python中的import语句

日志记录添加到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),因为使用的内存量不会随着输入的大小而增加。

  推荐:通过Python使用ChatGPT

  推荐:零基础如何开始学习Python


晓得博客,版权所有丨如未注明,均为原创
晓得博客 » 将日志记录添加到Python库

转载请保留链接:https://www.pythonthree.com/add-logging-to-python-libraries/

滚动至顶部