|
@@ -118,43 +118,8 @@ class MiscellService():
|
|
|
|
|
|
@staticmethod
|
|
|
def batch_add_access_log(request, status_code):
|
|
|
- request.encoding = 'utf-8'
|
|
|
- if request.method == 'GET':
|
|
|
- request_dict = request.GET
|
|
|
- if request.method == 'POST':
|
|
|
- request_dict = request.POST
|
|
|
- api_list = TemplateService.log_api()
|
|
|
- request_path = request.path.strip().strip('/')
|
|
|
- if request_path in api_list:
|
|
|
- user = MiscellService.get_access_name(request_dict)
|
|
|
- clientIP = CommonService.get_ip_address(request)
|
|
|
- now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
|
|
|
- password = request_dict.get('userPwd', None)
|
|
|
- if password is not None:
|
|
|
- request_dict = dict(request_dict)
|
|
|
- request_dict.pop('userPwd')
|
|
|
- content = json.dumps(request_dict)
|
|
|
- add_data = {
|
|
|
- 'user': user,
|
|
|
- 'ip': clientIP,
|
|
|
- 'status': status_code,
|
|
|
- 'url': request.META['SERVER_PROTOCOL'] + '-' + request.method + '-' + request.path,
|
|
|
- 'operation': request_path,
|
|
|
- 'time': str(now_time),
|
|
|
- 'content': content
|
|
|
- }
|
|
|
- redisObj = RedisObject()
|
|
|
- loggerData = json.dumps(add_data)
|
|
|
- print(loggerData)
|
|
|
- redisObj.rpush(name='logger', val=loggerData)
|
|
|
- # 判断redis列表长度
|
|
|
- if redisObj.llen(name='logger') > 100:
|
|
|
- data_list = redisObj.lrange('logger', 0, -1)
|
|
|
- redisObj.del_data(key='logger')
|
|
|
- ModelService.add_batch_log(data_list)
|
|
|
- else:
|
|
|
- pass
|
|
|
- # add batch
|
|
|
+ asy = threading.Thread(target=batch_add_log_ctr, args=(request, status_code))
|
|
|
+ asy.start()
|
|
|
|
|
|
|
|
|
def addLog(request, status_code):
|
|
@@ -187,3 +152,46 @@ def addLog(request, status_code):
|
|
|
ModelService.addAccessLog(data=add_data)
|
|
|
except Exception as e:
|
|
|
pass
|
|
|
+
|
|
|
+
|
|
|
+def batch_add_log_ctr(request, status_code):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ if request.method == 'GET':
|
|
|
+ request_dict = request.GET
|
|
|
+ elif request.method == 'POST':
|
|
|
+ request_dict = request.POST
|
|
|
+ else:
|
|
|
+ return
|
|
|
+ api_list = TemplateService.log_api()
|
|
|
+ request_path = request.path.strip().strip('/')
|
|
|
+ if request_path in api_list:
|
|
|
+ user = MiscellService.get_access_name(request_dict)
|
|
|
+ clientIP = CommonService.get_ip_address(request)
|
|
|
+ now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
|
|
|
+ password = request_dict.get('userPwd', None)
|
|
|
+ if password is not None:
|
|
|
+ request_dict = dict(request_dict)
|
|
|
+ request_dict.pop('userPwd')
|
|
|
+ content = json.dumps(request_dict)
|
|
|
+ add_data = {
|
|
|
+ 'user': user,
|
|
|
+ 'ip': clientIP,
|
|
|
+ 'status': status_code,
|
|
|
+ 'url': request.META['SERVER_PROTOCOL'] + '-' + request.method + '-' + request.path,
|
|
|
+ 'operation': request_path,
|
|
|
+ 'time': str(now_time),
|
|
|
+ 'content': content
|
|
|
+ }
|
|
|
+ redisObj = RedisObject()
|
|
|
+ loggerData = json.dumps(add_data)
|
|
|
+ print(loggerData)
|
|
|
+ redisObj.rpush(name='logger', val=loggerData)
|
|
|
+ # 判断redis列表长度
|
|
|
+ if redisObj.llen(name='logger') > 100:
|
|
|
+ data_list = redisObj.lrange('logger', 0, -1)
|
|
|
+ redisObj.del_data(key='logger')
|
|
|
+ # asy = threading.Thread(target=addLog, args=(request, status_code))
|
|
|
+ # asy.start()
|
|
|
+ ModelService.add_batch_log(data_list)
|
|
|
+ else:
|
|
|
+ pass
|