首页 > 解决方案 > 在创建 python 记录器条目时调用函数

问题描述

我有一个将请求发送到休息 api 的客户端。客户端已经在生产中,并且以捕获可能发生的各种异常的方式编写。我想添加一点,以便每当记录异常消息时,都会调用一个函数,该函数将该异常消息与堆栈跟踪一起接收并将其发送到指定的电子邮件地址。我的第一次尝试是按以下方式启动记录器:

self.log = logging.getLogger(__name__)
self.log.exception = MagicMock(side_effect=self.log.exception)

然后检查是否调用了 log.exception。但是,这种方法不能让我访问日志消息或堆栈跟踪。有没有比扩展整个日志记录模块更简单的方法来实现这一点?

标签: pythonpython-3.xlogging

解决方案


如果MagicMock是一个记录器对象并实现所有必需的方法(https://docs.python.org/3/library/logging.html),您可以添加使用以下内容:

fh = MagicMock()
fh.setLevel(logging.ERROR)
logger.addHandler(fh)

推荐阅读