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)
我正在编写自定义 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)