出错时在 python 中记录相关局部变量

Log related local variable in python on error

假设在生产应用中

一条python行res_json = res.json()["data"] 触发 KeyError:'data'

有什么方法可以有效地在 python 记录器中巧妙地记录 res 吗?
对于keyerror,我们通常希望看到整个dict并调试为什么data属性不在里面。

我真的厌倦了“一旦发现异常,就在触发错误的行之前插入一条日志语句”

在生产环境中,很难使用ipdb之类的工具手动回溯并打印出变量。

您可以将 try/exceptraise 结合使用,以确保在完成特定于站点的日志记录后继续引发异常:

try:
    res_json = res.json()["data"]
except KeyError as e:
    logger.warning(f"{e}: res = {res}")
    raise