如何记录所有 Django 序列化器验证错误?

Jet*_*hro 5 django django-rest-framework

与此类似,当序列化器验证失败时,我想在服务器上获取日志行。

将日志记录添加到序列化器的最佳方法是什么?

Ton*_* Yu 2

这也可以通过自定义异常处理程序来完成(请参阅Django REST Framework 文档),它将适用于所有 DRF 端点(如果您希望它用于所有 Django 端点,那么您应该使用自定义中间件):

def custom_exception_handler(exc, context):
    # Get standard error response from REST framework's default exception handler:
    response = exception_handler(exc, context)

    if response is not None and response.status_code == http.client.BAD_REQUEST:
        # Log response data for bad request to simplify debugging:
        logger.warning(f"Bad request to {context['request'].path}: {response.data}")

    return response
Run Code Online (Sandbox Code Playgroud)

您还需要注册此处理程序,如Django REST Framework 文档中所述。