Pre Merge pull request !86 from JackLu2021/N/A
commit
eaed8501d0
|
@ -2,6 +2,7 @@
|
||||||
日志 django中间件
|
日志 django中间件
|
||||||
"""
|
"""
|
||||||
import json
|
import json
|
||||||
|
from urllib.parse import unquote
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import AnonymousUser
|
from django.contrib.auth.models import AnonymousUser
|
||||||
|
@ -22,6 +23,7 @@ class ApiLoggingMiddleware(MiddlewareMixin):
|
||||||
self.enable = getattr(settings, 'API_LOG_ENABLE', None) or False
|
self.enable = getattr(settings, 'API_LOG_ENABLE', None) or False
|
||||||
self.methods = getattr(settings, 'API_LOG_METHODS', None) or set()
|
self.methods = getattr(settings, 'API_LOG_METHODS', None) or set()
|
||||||
self.operation_log_id = None
|
self.operation_log_id = None
|
||||||
|
self.url_map = getattr(settings, 'API_LOG_URL_MAP', None) or set()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def __handle_request(cls, request):
|
def __handle_request(cls, request):
|
||||||
|
@ -32,6 +34,18 @@ class ApiLoggingMiddleware(MiddlewareMixin):
|
||||||
def __handle_response(self, request, response):
|
def __handle_response(self, request, response):
|
||||||
# request_data,request_ip由PermissionInterfaceMiddleware中间件中添加的属性
|
# request_data,request_ip由PermissionInterfaceMiddleware中间件中添加的属性
|
||||||
body = getattr(request, 'request_data', {})
|
body = getattr(request, 'request_data', {})
|
||||||
|
user = get_request_user(request)
|
||||||
|
info = {
|
||||||
|
'request_ip': getattr(request, 'request_ip', 'unknown'),
|
||||||
|
'creator': user if not isinstance(user, AnonymousUser) else None,
|
||||||
|
'dept_belong_id': getattr(request.user, 'dept_id', None),
|
||||||
|
'request_method': request.method,
|
||||||
|
'request_path': request.request_path,
|
||||||
|
'request_body': body,
|
||||||
|
'request_os': get_os(request),
|
||||||
|
'request_browser': get_browser(request),
|
||||||
|
'request_msg': request.session.get('request_msg'),
|
||||||
|
}
|
||||||
# 请求含有password则用*替换掉(暂时先用于所有接口的password请求参数)
|
# 请求含有password则用*替换掉(暂时先用于所有接口的password请求参数)
|
||||||
if isinstance(body, dict) and body.get('password', ''):
|
if isinstance(body, dict) and body.get('password', ''):
|
||||||
body['password'] = '*' * len(body['password'])
|
body['password'] = '*' * len(body['password'])
|
||||||
|
@ -41,23 +55,20 @@ class ApiLoggingMiddleware(MiddlewareMixin):
|
||||||
if not response.data and response.content:
|
if not response.data and response.content:
|
||||||
content = json.loads(response.content.decode())
|
content = json.loads(response.content.decode())
|
||||||
response.data = content if isinstance(content, dict) else {}
|
response.data = content if isinstance(content, dict) else {}
|
||||||
|
info.update({
|
||||||
|
'response_code': response.data.get('code'),
|
||||||
|
'status': True if response.data.get('code') in [2000, ] else False,
|
||||||
|
'json_result': {"code": response.data.get('code'), "msg": response.data.get('msg')},
|
||||||
|
})
|
||||||
except Exception:
|
except Exception:
|
||||||
return
|
try:
|
||||||
user = get_request_user(request)
|
# 导出接口记录日志
|
||||||
info = {
|
if response['content-disposition'] is not None:
|
||||||
'request_ip': getattr(request, 'request_ip', 'unknown'),
|
info.update({
|
||||||
'creator': user if not isinstance(user, AnonymousUser) else None,
|
'json_result': unquote(response['content-disposition'])
|
||||||
'dept_belong_id': getattr(request.user, 'dept_id', None),
|
})
|
||||||
'request_method': request.method,
|
except Exception:
|
||||||
'request_path': request.request_path,
|
print('')
|
||||||
'request_body': body,
|
|
||||||
'response_code': response.data.get('code'),
|
|
||||||
'request_os': get_os(request),
|
|
||||||
'request_browser': get_browser(request),
|
|
||||||
'request_msg': request.session.get('request_msg'),
|
|
||||||
'status': True if response.data.get('code') in [2000, ] else False,
|
|
||||||
'json_result': {"code": response.data.get('code'), "msg": response.data.get('msg')},
|
|
||||||
}
|
|
||||||
operation_log, creat = OperationLog.objects.update_or_create(defaults=info, id=self.operation_log_id)
|
operation_log, creat = OperationLog.objects.update_or_create(defaults=info, id=self.operation_log_id)
|
||||||
if not operation_log.request_modular and settings.API_MODEL_MAP.get(request.request_path, None):
|
if not operation_log.request_modular and settings.API_MODEL_MAP.get(request.request_path, None):
|
||||||
operation_log.request_modular = settings.API_MODEL_MAP[request.request_path]
|
operation_log.request_modular = settings.API_MODEL_MAP[request.request_path]
|
||||||
|
|
Loading…
Reference in New Issue