python - 如何在 Django Rest Framework 中记录 400 个响应的更多详细信息?
问题描述
我有一个用 Django Rest Framework 构建的端点,有人正在向该端点发布数据。从今天早上开始,他收到了很多 400 条回复。在我的 Kibana 日志记录中,我只能确认他确实收到了 400 条回复。我需要调试它,但我没有很多信息。因此,我想记录有关 400 响应的更多详细信息。所以我想在我的视图中执行以下操作
def create(self, request, *args, **kwargs):
try:
response = super().create(request, *args, **kwargs)
return response
except exceptions.ValidationError as e:
logger.error(f"{e} in message: {request.data}")
return Response(e, status=status.HTTP_400_BAD_REQUEST)
这似乎可行,但它并不是最合乎逻辑的方式。有人知道记录 400 个响应的更 Pythonic 方式吗?
解决方案
我会检查这个response.status
值,它是一个整数,然后我记录response.data
它是一个dict
类似的对象。
此外,Logstash 非常喜欢 JSON 之类的项目,这可能更适合您的情况。
def create(self, request, *args, **kwargs):
response = super().create(request, *args, **kwargs)
if response.status == 400:
logger.error(response.data)
return response
推荐阅读
- azure - 无法通过 Azure Devops 发布管道执行 selenium 测试用例
- c - 错误:无效使用未指定边界的数组 - 包括解决方案,需要澄清
- reactjs - 基于枚举值的可选属性
- python - 为什么`decimal.Decimal`仍然给出舍入错误?
- laravel - Laravel - 用'as'关键字重命名键关联数组?
- plot - NotFittedError:尚未安装此 BalancedRandomForestClassifier 实例。在使用此方法之前使用适当的参数调用“fit”
- python - 另一个进程错误使用的文件:Python
- javascript - 使用用户语言+国家/地区对 Angular 7 应用程序进行本地化
- google-maps - 谷歌地图地理编码 api 返回无效邮政编码的结果
- sonarqube - 无法在 mac os catalina 上启动 sonarqube