问题
The default behaviour of DRF is to throw exception for 5XX, but return valid response with error details for 4XX. I want to log request and response of any API call which fails with 4XX.
Currently the log only shows Bad Request : /path/api/
Answer: Custom exception work fine.
回答1:
You can define your own custom exception handler and access your request such as:
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
And show your custom handler in settings.py
such as:
REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'my_project.my_app.utils.custom_exception_handler'
}
来源:https://stackoverflow.com/questions/57589907/how-to-log-request-and-response-for-4xx-http-status-in-django-rest-framework