| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | import jsonimport threadingimport datetimeimport timefrom bson import utcfrom Model.models import EquipmentLogModelfrom Service.CommonService import CommonServicefrom Service.MiscellService import MiscellServicefrom Service.TemplateService import TemplateServicedef add_access_log(request, status_code):    # 增加多进程 异步    asy = threading.Thread(target=addLog, args=(request, status_code))    asy.start()def addLog(request, status_code):    request_path = request.path.strip().strip('/')    if 'equipment' in request.path:        global request_dict        try:            if request.method == 'GET':                request_dict = request.GET            elif request.method == 'POST':                request_dict = request.POST            # api_list = TemplateService.log_api()            print('status_code:', status_code)            api_list = [                'equipment/add',                'equipment/delete',                'equipment/flowUpdate',                'v3/equipment/add',                'v3/equipment/modify',            ]            # 接口中文化            jiekou = {                'equipment/add': 'v1添加设备',                'equipment/delete': 'v1删除设备',                'equipment/flowUpdate': '更新设备的版本信息',                'v3/equipment/add': 'v3添加设备信息',                'v3/equipment/modify': 'v3编辑设备信息'            }            if request_path in api_list:                user = MiscellService.get_access_name(request_dict=request_dict)                clientIP = CommonService.get_ip_address(request)                # now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)                nowtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())                beijing = datetime.timezone(datetime.timedelta(hours=8))                utc = datetime.timezone.utc  # 获取 UTC 的时区对象                beijing_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(beijing)  # 强制转换加上 UTC 时区。此处敲黑板,需要特别注意。                # content:从前端获取到的参数数据,对获取到的数据进行处理                content = json.dumps(request_dict)                d = eval(content)                if 'uid' not in d:                    d['uid'] = ''                if 'NickName' not in d:                    d['NickName'] = ''                if 'equipmentid' not in d:                    d['equipmentid'] = ''                if 'UID' in d:                    d['uid'] = d['UID']                if 'id' in d:                    d['equipmentid'] = d['id']                password = request_dict.get('userPwd', None)                if password is not None:                    request_dict = dict(request_dict)                    request_dict.pop('userPwd')                if user != '':                    user = user                else:                    print('空')                    user = '空'                # 数据拼接                caozuo = '用户账号为:[' + user + ']' + '在' + str(beijing_time) + '进行' + str(jiekou[request_path])                # + ',' + '设备uid或主键id为:' + str(d['uid']) + str(d['equipmentid'])                print('request_dict:', d)                add_data = {                    'user': user,                    'uid': d['uid'],                    'equipmentid': d['equipmentid'],                    'NickName': d['NickName'],                    'ip': clientIP,                    'time': beijing_time,                    'url': request.path,                    'operatingcontent': caozuo,                }                print('操作数据:', add_data)                # 设备日志添加                EquipmentLogModel.objects.create(**add_data)        except Exception as e:            print(repr(e))            pass
 |