Python logging 从 handleError 获取对 logger 的引用

Python logging get reference to logger from handleError

我正在编写自定义 Python 日志记录处理程序,只要出现日志记录错误,它就会将系统置于错误状态。为此,我重写了自定义处理程序中的 handleError() 方法。

一旦系统进入错误状态,我需要监视记录器并偶尔测试它是否已恢复。为此,我需要引用在 handleError() 方法中出现错误的实际记录器。

如何从其处理程序的 handleError() 方法访问记录器?

我正在尝试做的事情的例子:

class MyFileHandler(WatchedFileHandler):
    def handleError(self, record):
        logger_that_had_the_error = ???????????
        put_system_in_error_state(f"Logging failure ({record.msg})")
        start_monitoring_logger(logger_that_had_the_error)
        super().handleError(record)

我应该用什么替换 ????????????与?

当调用 handleError 时,记录器中没有错误,处理程序的 emit() 方法中有错误。同一个处理程序可以附加到任意数量的记录器,甚至可能不附加到最初接收日志的记录器,而是附加到日志记录层次结构中的任何祖先。

要获取生成处理程序出错的日志的记录器的名称,您可以访问 LogRecord 对象的 name 属性。要获取实际的记录器对象,您可以使用该名称。因此,将其填写到您的代码中:

def handleError(self, record):
    logger_that_had_the_error = record.name
    # or if you want the logger object:
    # logger_that_had_the_error = logging.getLogger(record.name)