如何在 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'
}