0

这是对如何从 Python 日志记录模块获得非阻塞/实时行为的答案的后续问题?(输出到 PyQt QTextBrowser)X.Jacobs提供。

在 Python 日志记录模块中,添加自定义处理程序的常规方法是定义一个继承自的处理程序类logging.Handler(我们称之为 this CustomLogHandler)。要将其附加到logging进程,我们通常这样做:

import logging

class CustomLogHandler(logging.Handler):
    ... (some code here)...

logger = logging.getLogger()
logger.addHandler(CustomLogHandler)

whereaddHandlerlogger实例的方法。

问题:假设我们不想得到一个logger(即我们不想做上面的事情)。是否可以将其附加CustomLogHandlerlogging自身?

请参阅如何从 Python 日志记录模块获得非阻塞/实时行为中的评论?(输出到 PyQt QTextBrowser)作为上下文。

前提是可以在不引用logger实例的情况下使用自定义处理程序。

4

1 回答 1

5

logging.getLogger()返回根记录器实例,该对象没有进一步的“向上”,并且没有其他任何东西可以将处理程序附加根之外。

模块级功能,如logging.error()使用根记录器;引用文档

logging.error(msg[, *args[, **kwargs]])
在根记录器上记录级别为 ERROR 的消息。参数被解释为 debug()。

换句话说,像logging.error()简单地调用这样的函数getLogger().error()

将您的附加CustomLogHandler到根记录器是将其添加到模块的正确方法。

于 2013-01-16T21:12:15.493 回答