Pre Merge pull request !86 from JackLu2021/N/A
commit
eaed8501d0
|
@ -2,6 +2,7 @@
|
|||
日志 django中间件
|
||||
"""
|
||||
import json
|
||||
from urllib.parse import unquote
|
||||
|
||||
from django.conf import settings
|
||||
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.methods = getattr(settings, 'API_LOG_METHODS', None) or set()
|
||||
self.operation_log_id = None
|
||||
self.url_map = getattr(settings, 'API_LOG_URL_MAP', None) or set()
|
||||
|
||||
@classmethod
|
||||
def __handle_request(cls, request):
|
||||
|
@ -32,6 +34,18 @@ class ApiLoggingMiddleware(MiddlewareMixin):
|
|||
def __handle_response(self, request, response):
|
||||
# request_data,request_ip由PermissionInterfaceMiddleware中间件中添加的属性
|
||||
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请求参数)
|
||||
if isinstance(body, dict) and body.get('password', ''):
|
||||
body['password'] = '*' * len(body['password'])
|
||||
|
@ -41,23 +55,20 @@ class ApiLoggingMiddleware(MiddlewareMixin):
|
|||
if not response.data and response.content:
|
||||
content = json.loads(response.content.decode())
|
||||
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:
|
||||
return
|
||||
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,
|
||||
'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')},
|
||||
}
|
||||
try:
|
||||
# 导出接口记录日志
|
||||
if response['content-disposition'] is not None:
|
||||
info.update({
|
||||
'json_result': unquote(response['content-disposition'])
|
||||
})
|
||||
except Exception:
|
||||
print('')
|
||||
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):
|
||||
operation_log.request_modular = settings.API_MODEL_MAP[request.request_path]
|
||||
|
|
Loading…
Reference in New Issue