在创建库函数时,我一直关注(我相信)是正确的WRT记录练习。我执行以下操作在我的库的给定函数中创建一个子记录器:
my_lib.py
import logging
def my_func():
log = logging.getLogger('my_lib.my_func')
log.debug("You've just called my_lib.my_func!")
在我的主程序中,我得到一个记录器"免费"来自项目的图书馆。此项目记录器已经设置了处理程序和格式化程序。输出格式很精美,是记录此项目的首选方式。
默认情况下,my_lib
的记录器会继承主(logging.INFO
)记录器的记录级别(logging.getLogger('')
),因此log.debug()
消息不是&# 39;默认情况下在程序运行时看到。
如果我想从我的库中看到日志消息,我可以从我的主程序中配置my_lib.my_func
记录器:
logging.getLogger("my_lib.my_func").level = logging.DEBUG
这是有效的,但是如果消息已由Project logger处理,则消息不会被格式化。
在主程序中,是否可以通过"链接"或者将记录消息从my_lib.my_func
记录器转发到项目记录器以利用项目记录器提供的格式?
答案 0 :(得分:3)
如果将当前添加到项目记录器的处理程序/格式化程序设置为根记录程序,则将使用它们进行所有日志记录,包括来自my_Lib.my_func
的日志记录。否则,您必须复制与项目记录器对my_lib
记录器(或my_lib.my_func
记录器)相同的设置。