From 4328999efb6773e1102c0f6ece6ba744e71d9c88 Mon Sep 17 00:00:00 2001 From: xfc Date: Thu, 15 Jun 2023 13:23:31 +0800 Subject: [PATCH] exception&log --- TP_API/settings.py | 1 + app/exception.py | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 app/exception.py diff --git a/TP_API/settings.py b/TP_API/settings.py index 0054cec..b4a19dd 100644 --- a/TP_API/settings.py +++ b/TP_API/settings.py @@ -158,6 +158,7 @@ REST_FRAMEWORK = { 'DATETIME_FORMAT': "%Y-%m-%d %H:%M:%S", 'DATE_FORMAT': "%Y-%m-%d", 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'], + 'EXCEPTION_HANDLER': 'app.exception.exception_handler', } # 配置日志 diff --git a/app/exception.py b/app/exception.py new file mode 100644 index 0000000..6d4d561 --- /dev/null +++ b/app/exception.py @@ -0,0 +1,23 @@ +import logging +from rest_framework.views import exception_handler as drf_exception_handler # drf原生处理异常函数取别名 +from rest_framework.views import Response +from rest_framework import status + + +logger = logging.getLogger('mylogger') + + +def exception_handler(exc, context): + # drf的exception_handler做基础处理 + response = drf_exception_handler(exc, context) + # 为空,进行自定义二次处理 + logger.error(str(exc)) + if response is None: + # print(exc) # 错误原因 + # print(context) # 错误信息 + print('%s - %s - %s' % (context['view'], context['request'].method, exc)) + return Response({ + 'detail': '服务器错误' + }, status=status.HTTP_500_INTERNAL_SERVER_ERROR, exception=True) + return response +