瀏覽代碼

日志中间件记录错误信息

guanhailong 2 年之前
父節點
當前提交
a476216fad
共有 3 個文件被更改,包括 34 次插入4 次删除
  1. 1 0
      Ansjer/cn_config/test_settings.py
  2. 1 0
      Ansjer/local_config/local_settings.py
  3. 32 4
      MiddleWare/requestRecord.py

+ 1 - 0
Ansjer/cn_config/test_settings.py

@@ -34,6 +34,7 @@ MIDDLEWARE = [
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
     'django.middleware.security.SecurityMiddleware',
+    'MiddleWare.requestRecord.LogMiddleware',
 ]
 
 AUTHENTICATION_BACKENDS = (

+ 1 - 0
Ansjer/local_config/local_settings.py

@@ -67,6 +67,7 @@ MIDDLEWARE = [
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
     'django.middleware.security.SecurityMiddleware',
+    'MiddleWare.requestRecord.LogMiddleware',
 ]
 
 AUTHENTICATION_BACKENDS = (

+ 32 - 4
MiddleWare/requestRecord.py

@@ -31,7 +31,7 @@ class RequestRecordMiddleware(MiddlewareMixin):
             else:
                 parameter = ''
 
-            if response.status_code == 500:     # 处理没有捕获异常的情况
+            if response.status_code == 500:  # 处理没有捕获异常的情况
                 request_record_data = {
                     'method': method,
                     'url': url,
@@ -41,9 +41,9 @@ class RequestRecordMiddleware(MiddlewareMixin):
                     'reason_phrase': response.reason_phrase,
                 }
                 RequestRecordModel.objects.create(**request_record_data)
-            elif response.content:     # 处理捕获异常的情况
+            elif response.content:  # 处理捕获异常的情况
                 # print('content: ', response.content)
-                content = eval(str(response.content, 'utf-8'))   # bytes 转为 dict
+                content = eval(str(response.content, 'utf-8'))  # bytes 转为 dict
                 # logger = logging.getLogger('info')
                 # logger.info('content: {}'.format(content))
                 error_flag = False
@@ -51,7 +51,7 @@ class RequestRecordMiddleware(MiddlewareMixin):
                 if 'result_code' in content and (content['result_code'] == 500 or content['result_code'] == 474):
                     reason_phrase = content['result']
                     error_flag = True
-                elif 'code' in content and content['code'] == 500:    # ResponseObject.returntype == 'pc'
+                elif 'code' in content and content['code'] == 500:  # ResponseObject.returntype == 'pc'
                     reason_phrase = content['data']
                     error_flag = True
                 if error_flag:
@@ -66,3 +66,31 @@ class RequestRecordMiddleware(MiddlewareMixin):
                     RequestRecordModel.objects.create(**request_record_data)
         finally:
             return response
+
+
+class LogMiddleware:
+    def __init__(self, get_response):
+        self.get_response = get_response
+
+    def __call__(self, request):
+        # 响应
+        response = self.get_response(request)
+        json_obj = json.loads(response.content)
+        # 请求是否成功
+        if json_obj['result_code'] != 0:
+            LOGGER = logging.getLogger('error')
+            # 记录请求
+            path = request.path
+            if request.method == 'POST':
+                # GET请求逻辑处理
+                parameter = request.POST
+                LOGGER.error(
+                    '请求路径:{}, 请求方式:{}, 输入数据:{}, 输出数据:{}, 响应状态:{}'.format(path, request.method, parameter, json_obj,
+                                                                         response.status_code))
+            elif request.method == 'GET':
+                parameter = request.GET
+                LOGGER.error(
+                    '请求路径:{}, 请求方式:{}, 输入数据:{}, 输出数据:{}, 响应状态:{}'.format(path, request.method, parameter, json_obj,
+                                                                         response.status_code))
+
+        return response