如何解决Python 日志记录从 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。