如何在 Django Rest Framework 中记录 400 响应的更多详细信息?
How to log more detail of 400 responses in Django Rest Framework?
我有一个使用 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)
<b>if response.status == 400:
logger.error(response.data)</b>
return response
我有一个使用 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)
<b>if response.status == 400:
logger.error(response.data)</b>
return response