繁体   English   中英

将自定义处理程序添加到没有记录器实例的Python记录模块中?

[英]Adding custom handler to Python logging module without a logger instance?

这是答案的后续问题, 如何从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)

其中addHandlerlogger实例的方法。

:假设我们希望得到一个logger (即我们不想做以上)。 是否可以将CustomLogHandler附加到logging本身?

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

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

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

诸如logging.error()类的模块级功能使用root logger。 引用文档

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

换句话说, logging.error()类的函数只需调用getLogger().error()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM