Skip to main content
 首页 » 编程设计

python之保存 Django 400 错误请求用于分析目的

2025年04月02日25yjmyzz

我有一个基于 Django 的 API。

有时我的客户告诉我,他们的一些请求返回 400(错误请求),即使他们不应该这样做。

我想到了一种处理和调试确切问题的好方法,通过保存失败的请求、所有 header (例如访问 token )和时间戳,所以当我看到有问题的模式时,我'将能够调试它并找到原因。

关于我的方法的问题是 - 我如何“触发”一个函数,每次我返回状态为 400 的响应时,该函数将收集请求及其所有 header ?

请您参考如下方法:

如果 400 响应是由 Django 生成的,您可以使用 custom middleware (注意:中间件 api 在 1.10 中发生了变化,对于 django <= 1.9,文档是 here )和 logging module - 只需确保您的日志记录是 correctly configured在你的 Django 设置中。

如果 400 响应发生在更高级别,那么您必须根据项目的部署方式检查相关文档

另外 FYIY django.core.WSGIHandler 在实例化 HttpRequest 对象时发生 UnicodeDecodeError 时产生 400 响应 - 在这种情况下 AFAICT中间件甚至不会被调用。您应该已经在为 django.requests (cf https://docs.djangoproject.com/en/1.10/topics/logging/#django-request )

配置的记录器中找到这些事件的痕迹