如何在 Django Rest Framework 中记录 4XX Http 状态的请求和响应?
How to log request and response for 4XX Http status in Django Rest Framework?
DRF 的默认行为是为 5XX 抛出异常,但 return 为 4XX 提供包含错误详细信息的有效响应。我想记录任何因 4XX 而失败的 API 调用的请求和响应。
目前日志只显示Bad Request : /path/api/
回答:自定义异常工作正常。
您可以定义自己的自定义异常处理程序并访问您的请求,例如:
from rest_framework.views import exception_handler
def custom_exception_handler(exc, context):
response = exception_handler(exc)
if response is not None:
response.data['status_code'] = response.status_code
response.data['request'] = context['request']
return response
并在 settings.py
中显示您的自定义处理程序,例如:
REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'my_project.my_app.utils.custom_exception_handler'
}
DRF 的默认行为是为 5XX 抛出异常,但 return 为 4XX 提供包含错误详细信息的有效响应。我想记录任何因 4XX 而失败的 API 调用的请求和响应。
目前日志只显示Bad Request : /path/api/
回答:自定义异常工作正常。
您可以定义自己的自定义异常处理程序并访问您的请求,例如:
from rest_framework.views import exception_handler
def custom_exception_handler(exc, context):
response = exception_handler(exc)
if response is not None:
response.data['status_code'] = response.status_code
response.data['request'] = context['request']
return response
并在 settings.py
中显示您的自定义处理程序,例如:
REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'my_project.my_app.utils.custom_exception_handler'
}