"链接"或者在Python中转发子记录器

时间:2015-10-14 02:12:27

标签: python python-2.7 logging

在创建库函数时,我一直关注(我相信)是正确的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记录器转发到项目记录器以利用项目记录器提供的格式?

1 个答案:

答案 0 :(得分:3)

如果将当前添加到项目记录器的处理程序/格式化程序设置为根记录程序,则将使用它们进行所有日志记录,包括来自my_Lib.my_func的日志记录。否则,您必须复制与项目记录器对my_lib记录器(或my_lib.my_func记录器)相同的设置。