如何在 Django Rest Framework 中记录 400 条响应的更多详细信息?

问题描述 投票:0回答:1

我有一个使用 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)

这似乎有效,但感觉并不是最合乎逻辑的做法。有没有更 Pythonic 的方式来记录 400 个响应?

python django logging django-rest-framework http-status-code-400
1个回答
1
投票

我会检查

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
© www.soinside.com 2019 - 2024. All rights reserved.