Browse Source

国内增添中间件日志

guanhailong 2 years ago
parent
commit
d32a69ee88

+ 1 - 0
AnsjerPush/cn_config/cn_formal_settings.py

@@ -22,6 +22,7 @@ MIDDLEWARE = [
     'django.contrib.sessions.middleware.SessionMiddleware',
     'corsheaders.middleware.CorsMiddleware',
     'django.middleware.common.CommonMiddleware',
+    'MiddleWare.requestRecord.RequestRecordMiddleware',  # 记录请求信息
     # 'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',

+ 4 - 0
AnsjerPush/config.py

@@ -4,6 +4,10 @@
 
 import os
 import datetime
+import logging
+
+# 日志配置
+LOGGER = logging.getLogger('info')
 
 # 配置信息
 CONFIG_TEST = 'test'

+ 1 - 0
AnsjerPush/dev_config/local_settings.py

@@ -22,6 +22,7 @@ MIDDLEWARE = [
     'django.contrib.sessions.middleware.SessionMiddleware',
     'corsheaders.middleware.CorsMiddleware',
     'django.middleware.common.CommonMiddleware',
+    'MiddleWare.requestRecord.RequestRecordMiddleware',  # 记录请求信息
     # 'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',

+ 1 - 0
AnsjerPush/eur_config/eur_formal_settings.py

@@ -22,6 +22,7 @@ MIDDLEWARE = [
     'django.contrib.sessions.middleware.SessionMiddleware',
     'corsheaders.middleware.CorsMiddleware',
     'django.middleware.common.CommonMiddleware',
+    'MiddleWare.requestRecord.RequestRecordMiddleware',  # 记录请求信息
     # 'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',

+ 1 - 0
AnsjerPush/settings.py

@@ -22,6 +22,7 @@ MIDDLEWARE = [
     'django.contrib.sessions.middleware.SessionMiddleware',
     'corsheaders.middleware.CorsMiddleware',
     'django.middleware.common.CommonMiddleware',
+    'MiddleWare.requestRecord.RequestRecordMiddleware',  # 记录请求信息
     # 'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',

+ 1 - 0
AnsjerPush/test_config/test_settings.py

@@ -27,6 +27,7 @@ MIDDLEWARE = [
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
+    'MiddleWare.requestRecord.RequestRecordMiddleware',  # 记录请求信息
 ]
 
 ROOT_URLCONF = 'AnsjerPush.urls'

+ 7 - 0
MiddleWare/__init__.py

@@ -0,0 +1,7 @@
+# -*- coding: utf-8 -*-
+"""
+@Time : 2023/5/12 10:00
+@Auth : guanhailong
+@File :__init__.py.py
+@IDE :PyCharm
+"""

+ 38 - 0
MiddleWare/requestRecord.py

@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+"""
+@Time : 2021/9/22 17:08
+@Auth : Locky
+@File :requestRecord.py
+@IDE :PyCharm
+"""
+import json
+import time
+from django.utils.deprecation import MiddlewareMixin
+from AnsjerPush.config import LOGGER
+
+
+class RequestRecordMiddleware(MiddlewareMixin):
+    def process_request(self, request):
+        request.start_time = time.time()
+
+    def process_response(self, request, response):
+        try:
+            method = request.method
+            url = request.path
+
+            # 获取请求参数并转为字符串
+            if method == 'GET':
+                parameter = json.dumps(request.GET.dict())
+            elif method == 'POST':
+                parameter = json.dumps(request.POST.dict())
+            else:
+                parameter = ''
+            content = eval(str(response.content, 'utf-8'))  # bytes 转为 dict
+
+            # 记录响应码不为0的接口日志
+            if ('result_code' in content and content['result_code'] != 0) or \
+                    ('code' in content and content['code'] != 0):
+                LOGGER.info('请求路径:{}, 请求方式:{}, 输入数据:{}, 输出数据:{}, 响应状态:{}'.
+                            format(url, method, parameter, content, response.status_code))
+        finally:
+            return response