Django: REST API 引发异常的日志消息

2024-05-18 14:49:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我将Django REST框架用于一个简单的API。我有以下自定义异常,它将DRF的APIException子类化:

class BadRequest(APIException):
    status_code = 400
    default_detail = 'Invalid request'
    default_code = 'bad_request'

该项目使用以下日志记录设置:

LOGGING = {
    'handlers': {
        'log_to_file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.TimedRotatingFileHandler',
        }
    },
    'loggers': {
        # "catch all" logger
        '': {
            'handlers': ['log_to_file'],
            'level': 'INFO',
            'propagate': True,
        },
        'django': {
            'handlers': ['log_to_file'],
            'propagate': False,
            'level': 'INFO',
    },
}

现在,如果我使用此视图测试异常处理:

@api_view(['GET'])
def hello_world(request):
    raise BadRequest('test')

我正确地得到了带有{'detail': 'test'}JSON的400响应,但日志文件仅包含:

2019-11-19 [django.request] WARNING: Bad Request: /api/v1/hello [in log.py:228]

如何让它在日志文件中显示实际的异常消息(test)?注意,这是我在DEBUG = False时得到的行为


Tags: todebugtestinfologdefaultrequesthandlers

热门问题