在没有记录器实例的情况下向Python日志记录模块添加自定义处

Gil*_*ead 0 python logging

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

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

import logging

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

logger = logging.getLogger()
logger.addHandler(CustomLogHandler)
Run Code Online (Sandbox Code Playgroud)

where addHandlerlogger实例的方法.

:假设我们希望得到一个logger(即我们不想做以上).有可能附加CustomLogHandlerlogging自身?

请参阅如何从Python日志记录模块获取非阻塞/实时行为中的注释(输出到PyQt QTextBrowser)用于上下文.

前提是可以使用自定义处理程序而无需引用logger实例.

Mar*_*ers 5

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

模块级函数就像logging.error()使用根记录器一样; 引用文件:

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

换句话说,功能就像logging.error()简单地调用getLogger().error().

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