【问题标题】:"Linking" or forwarding sub-loggers in Python在 Python 中“链接”或转发子记录器
【发布时间】:2015-10-14 02:12:27
【问题描述】:

在创建库函数时,我一直在遵循(我相信)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 的 loggers 继承了 main (logging.getLogger('')) logger 的日志级别 (logging.INFO),因此在程序运行时默认看不到 log.debug() 消息。

如果我想从我的库中查看日志消息,我可以在我的主程序中像这样配置 my_lib.my_func 记录器:

logging.getLogger("my_lib.my_func").level = logging.DEBUG

这可行,但是消息的格式与项目记录器处理时的格式不同。

在主程序中,有没有办法将日志消息从my_lib.my_func 记录器“链接”或转发到项目记录器,以利用项目记录器提供的格式?

【问题讨论】:

    标签: python python-2.7 logging


    【解决方案1】:

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

    【讨论】:

    • 和我预期的差不多。像宣传的那样工作。以防今天没有人感谢您在 Logging 模块上所做的工作,“感谢 Vinay。”
    猜你喜欢
    • 2011-02-28
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多