我有一个使用 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 个响应?
我会检查
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