一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种接口访问日志采集记录查询方法、设备及存储介质与流程

2022-06-08 20:32:36 来源:中国专利 TAG:


1.本发明涉及日志处理技术领域,特别是涉及一种接口访问日志采集记录查询方法、设备及存储介质。


背景技术:

2.目前,log4j,slf4j,logback需要开发编码输出日志,一般输出到文件的数据为非格式化数据,且输出的日志是整个服务的运行日志,无法区分特定用户的操作信息,在大量日志中难以筛选特定用户的行为或特定行为对应的特定用户。
3.如果将行为日志与其他日志统一输出到日志文件,查找分析的人必须知道该行为日志对应的日志格式才能检索,否则对大小动辄上g的日志文件中查找一行或几行是非常耗时的,普通用户无法操作。现有技术还存在使用elk采集log4j、slf4j、logback输出日志格式化进行存储,但依然要开发人员编码输出日志。


技术实现要素:

4.有鉴于此,本发明的目的在于提供一种接口访问日志采集记录查询方法、设备及存储介质,可以自动生成结构化数据,无需额外编码对接接口访问日志,并且直接使用sql进行查询,无需额外进行数据处理。其具体方案如下:
5.一种接口访问日志采集记录查询方法,包括:
6.在线统一管理多个业务系统的接口信息和授权;
7.接收携带token的接口请求,采用用户信息拦截器解析token,获取用户信息并存入线程本地变量;
8.采用接口访问日志拦截器依次对所述用户信息进行前置处理和后置处理,以获取权限信息,访问相应的接口来构造日志对象并发送至日志服务;
9.在所述日志服务接收到所述日志对象的写请求后,为所述日志对象生成唯一id,并将所述日志对象存入队列;
10.通过所述日志服务中单独的线程循环批量从所述队列中取出所述日志对象,写入数据库;
11.接收查询请求,通过所述日志服务生成并重构查询sql,根据重构后的所述查询sql的查询语句进行所述数据库的日志查询。
12.优选地,在本发明实施例提供的上述接口访问日志采集记录查询方法中,所述在线统一管理多个业务系统的接口信息和授权,包括:
13.登录基础信息管理服务,在线添加接口定义;所述接口定义包括接口地址、接口请求方式、接口所属微服务、所属功能模块或菜单、接口编码、接口名称、是否需要记录日志;
14.给用户指定角色并给角色分配接口权限。
15.优选地,在本发明实施例提供的上述接口访问日志采集记录查询方法中,采用接口访问日志拦截器对所述用户信息进行前置处理,包括:
16.判断接口所属微服务是否需要进行接口权限检查;
17.若需要,则检查当前微服务所有接口定义是否加载到业务系统微服务的内存;
18.若未加载,则采用业务系统微服务通过feign发送请求到所述基础信息管理服务获取业务系统微服务的所有接口定义信息,使用参数微服务名;在所述基础信息管理服务接收到请求后,使用微服务名从存储中查询业务系统微服务的所有接口定义信息,以json数组形式返回给业务系统微服务;
19.若加载,则获取当前接口地址对应的接口定义,并采用业务系统微服务通过feign发送请求到所述基础信息管理服务获取当前用户有权访问当前微服务的接口定义信息;在所述基础信息管理服务接收到请求后,使用微服务名和用户id从存储中查询满足条件的接口定义信息,以json数组形式返回给业务系统微服务。
20.优选地,在本发明实施例提供的上述接口访问日志采集记录查询方法中,在所述以json数组形式返回给业务系统微服务之后,还包括:
21.在业务系统微服务接收到用户的接口权限集合后,判断当前接口地址对应的接口定义是否存在于用户的接口权限集合中;
22.若存在,则标记当前接口定义,获取接口定义编码,将编码存入请求对象的属性;
23.若不存在,则直接返回给系统用户提示无权访问。
24.优选地,在本发明实施例提供的上述接口访问日志采集记录查询方法中,采用接口访问日志拦截器对所述用户信息进行后置处理,包括:
25.判断当前微服务是否需要进行接口访问日志记录;
26.若需要进行接口访问日志记录,则判断前置处理中是否标记当前接口定义;
27.若未标记,则重新判断是否需要获取所有接口定义,获取当前接口定义信息;若标记,则从请求对象中获取接口编码,通过所述接口编码从所有接口定义中获取匹配的接口定义;
28.判断接口定义中是否需要记录日志;
29.若需要记录日志,则构造日志对象,并将所述日志对象通过feign发送到日志服务;若无需记录日志,则返回接口执行结果到系统用户。
30.优选地,在本发明实施例提供的上述接口访问日志采集记录查询方法中,在所述写入数据库之后,还包括:
31.将存储状态返回至业务系统微服务,以返回接口执行结果给系统用户;
32.通过业务系统微服务判断feign降级处理是否捕获到请求异常;若捕获到请求异常,则打印异常信息到服务日志文件。
33.优选地,在本发明实施例提供的上述接口访问日志采集记录查询方法中,所述通过所述日志服务生成并重构查询sql,包括:
34.通过所述日志服务根据查询条件生成查询sql;
35.利用分页拦截器重构所述查询sql,将所述查询sql的查询语句变为总数查询语句;或,
36.使用总数、页码、每页大小重构所述查询sql,将所述查询sql的查询语句变为分页查询语句。
37.优选地,在本发明实施例提供的上述接口访问日志采集记录查询方法中,所述根
据重构后的所述查询sql的查询语句进行所述数据库的日志查询,包括:
38.若只有一条真实可执行查询语句,则直接发给所述数据库进行查询、排序、分页处理;
39.若不止一条真实可执行查询语句,则将语句中分页信息去掉,并行执行多条sql,获得多个集合,按表名倒排合并集合,按分页信息获取子集。
40.本发明实施例还提供了一种接口访问日志采集记录查询设备,包括处理器和存储器,其中,所述处理器执行所述存储器中存储的计算机程序时实现如本发明实施例提供的上述接口访问日志采集记录查询方法。
41.本发明实施例还提供了一种计算机可读存储介质,用于存储计算机程序,其中,所述计算机程序被处理器执行时实现如本发明实施例提供的上述接口访问日志采集记录查询方法。
42.从上述技术方案可以看出,本发明所提供的一种接口访问日志采集记录查询方法,包括:在线统一管理多个业务系统的接口信息和授权;接收携带token的接口请求,采用用户信息拦截器解析token,获取用户信息并存入线程本地变量;采用接口访问日志拦截器依次对用户信息进行前置处理和后置处理,以获取权限信息,访问相应的接口来构造日志对象并发送至日志服务;在日志服务接收到日志对象的写请求后,为日志对象生成唯一id,并将日志对象存入队列;通过日志服务中单独的线程循环批量从队列中取出日志对象,写入数据库;接收查询请求,通过日志服务生成并重构查询sql,根据重构后的查询sql的查询语句进行数据库的日志查询。
43.通过本发明提供的上述方法,开发人员只需要编写接口逻辑,无需额外编码对接接口访问日志,就可以自动生成结构化数据,存储到结构化数据库中,并且直接使用sql进行查询,无需额外进行数据处理。此外,本发明还针对接口访问日志采集记录查询方法提供了相应的设备及计算机可读存储介质,进一步使得上述方法更具有实用性,该设备及计算机可读存储介质具有相应的优点。
附图说明
44.为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
45.图1为本发明实施例提供的接口访问日志采集记录查询方法的流程图;
46.图2为本发明实施例提供的接口访问日志采集记录查询架构图。
具体实施方式
47.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
48.本发明提供一种接口访问日志采集记录查询方法,如图1所示,包括以下步骤:
49.s101、在线统一管理多个业务系统的接口信息和授权;
50.在具体实施时,步骤s101在线统一管理多个业务系统的接口信息和授权,具体可以包括:首先,在基础信息管理服务(lark-admin)中添加接口定义,具体由管理员登录基础信息管理平台在线添加接口定义;该接口定义主要包括接口地址、接口请求方式、接口所属微服务、所属功能模块或菜单、接口编码、接口名称、是否需要记录日志;然后,给用户指定角色并给角色分配接口权限。请求方式主要为get和post,部分学校防火墙禁止使用put、delete。对于需要在path中携带参数的地址使用{*}表示参数位置,例如:/menu/delete/{*}表示删除指定菜单的接口地址。使用时{*}实际为菜单id。对于请求以param方式携带参数只需要配置路径不需要配置参数,例如:带参数地址为/menu/delete?id=xxxxx,接口定义中地址只需要/menu/delete。
51.需要说明的是,lark-admin包含菜单信息、接口信息、用户信息、部门信息、岗位信息、角色信息、租户信息等。本发明的接口统一指的是restful接口。restful是一种网络应用程序的设计风格和开发方式,基于http,可以使用xml格式定义或json格式定义。restful适用于移动互联网厂商作为业务接口的场景,实现第三方ott调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
52.s102、接收携带token的接口请求,采用用户信息拦截器解析token,获取用户信息并存入线程本地变量;
53.具体地,用户携带token发起接口请求;凡是需要验证接口权限或者需要记录接口访问日志的接口都必须登录获取token后才允许访问。接口所属微服务接收到请求后,用户信息拦截器解析token(识别用户信息),获取用户信息,将所述用户信息存入线程本地变量。
54.需要说明的是,token是在计算机身份认证中是令牌(临时)的意思,一般作为邀请、登录系统使用。上述接口请求可以是web界面调用接口,其他微服务调用接口,第三方服务调用接口,或者是postman、jmeter等http工具调用接口。上述获取的用户信息可以包括用户名、用户账号、用户id、租户id、所属部门id等。
55.s103、采用接口访问日志拦截器依次对用户信息进行前置处理和后置处理,以获取权限信息,访问相应的接口来构造日志对象并发送至日志服务;
56.需要说明的是,接口访问日志拦截器是拦截http请求进行权限鉴定和日志记录的工具,基于springmvc开发。接口访问日志拦截器分前置处理和后置处理,中间为原接口处理逻辑,相当于拦截处理了接口调用前和调用后的部分。
57.s104、在日志服务接收到日志对象的写请求后,为日志对象生成唯一id,并将日志对象存入队列;
58.需要说明的是,日志服务(lark-log)接收到日志对象写请求后为日志对象生成唯一id的步骤为多进程,该id唯一且自带时序,将日志对象存入队列,不返回任何值到业务系统微服务。日志对象id可以使用snowflake算法生成,保证唯一且自带时序。
59.队列使用java.util.concurrent.linkedblockingqueue.linkedblockingqueue,单个最大容量10000。lark-log集群部署,比如部署3个节点则同一时间队列最大容量为30000。业务系统微服务向lark-log集群发送日志对象时,先从注册中心获取当前lark-log集群节点信息。
60.s105、通过日志服务中单独的线程循环批量从队列中取出日志对象,写入数据库;
61.需要说明的是,lark-log中单独的线程(即服务启动时线程就开启,直到服务进程死掉)循环批量从所述队列中取出日志对象,写入数据库的步骤为多线程。数据库中日志表,按月分表,每月定时(如1号)自动生成下月日志表(即定时任务)。服务启动时自动检测当月日志表是否存在,不存在自动创建。日志表名格式:operation_log_yyyy_mm,yyyy_mm表示年和月。通过计算请求时间的年份和月份确定日志对象该写入哪个表(即分表写入)。lark-log集群部署,比如部署3个节点则同一时间有3个线程独立处理各自3个队列。
62.s106、接收查询请求,通过日志服务生成并重构查询sql,根据重构后的查询sql的查询语句进行数据库的日志查询。
63.在本发明实施例提供的上述接口访问日志采集记录查询方法中,开发人员只需要编写接口逻辑,无需额外编码对接接口访问日志,就可以自动生成结构化数据,存储到结构化数据库中,并且直接使用sql进行查询,无需额外进行数据处理。
64.在具体实施时,在本发明实施例提供的上述接口访问日志采集记录查询方法中,步骤s103采用接口访问日志拦截器对用户信息进行前置处理,具体可以包括以下步骤:
65.判断接口所属微服务是否需要进行接口权限检查;具体地,获取配置信息的配置项auth.useapiauth;如果为true表示需要验证接口权限;而为false表示不需要验证;
66.若需要进行接口权限检查,则检查当前微服务所有接口定义是否加载到业务系统微服务的内存;
67.若未加载,则采用业务系统微服务通过feign发送请求到基础信息管理服务获取业务系统微服务的所有接口定义信息,使用参数微服务名,微服务名来自配置信息,目的是将接口鉴权、接口日志记录的计算压力分散到各个业务系统,减少网关的内存、cpu消耗;在基础信息管理服务接收到请求后,使用微服务名从存储中查询业务系统微服务的所有接口定义信息,以json数组形式返回给业务系统微服务,具体为:可以先从redis查询,redis中不存在则从数据库中查询,数据库查询后将结果写入redis;下一查询时可直接从redis查询;
68.若加载,则获取当前接口地址对应的接口定义,并采用业务系统微服务通过feign发送请求到基础信息管理服务获取当前用户有权访问当前微服务的接口定义信息;在基础信息管理服务接收到请求后,使用微服务名和用户id从存储中查询满足条件的接口定义信息,以json数组形式返回给业务系统微服务,具体为:可以先从redis查询,redis中不存在则从数据库中查询,数据库查询后将结果写入redis。下一次查询时可直接从redis查询;
69.若无需进行接口权限检查,则进行原接口处理逻辑调用。
70.上述步骤中获取当前接口地址对应的接口定义,具体为:可以先获取当前请求地址和当前请求方式;然后遍历所有接口定义信息,与当前请求地址和当前请求方式都匹配则为当前接口地址对应的接口定义。请求方式字符串全等则匹配。请求地址地址中不包含{*},字符串全等则匹配。请求地址地址中包含{*},则先将{*}全部替换为[a-za-z\\\\d] ,然后前缀加^,后缀加$。构造正则表达式,然后判断是否匹配当前请求地址。
[0071]
需要注意的是,本发明的高并发场景下接口日志记录、鉴权在业务系统中完成,而非在微服务网关中完成,将计算压力分散到各个业务系统中,提升网关转发速度,降低网关所在服务器的内存和cpu消耗。
[0072]
进一步地,在具体实施时,在本发明实施例提供的上述接口访问日志采集记录查询方法中,在执行上述步骤以json数组形式返回给业务系统微服务之后,还可以包括:在业务系统微服务接收到用户的接口权限集合后,判断当前接口地址对应的接口定义是否存在于用户的接口权限集合中,即识别用户行为,用户是谁,什么时间做了什么操作,是否有权操作等;若存在,则标记当前接口定义,获取接口定义编码,将编码存入请求对象(对于java为httpservletrequest)的属性apicode;若不存在,则直接返回给系统用户提示无权访问。至此,前置处理完成,可以接下来执行原接口处理逻辑调用。
[0073]
在具体实施时,在本发明实施例提供的上述接口访问日志采集记录查询方法中,步骤s103采用接口访问日志拦截器对用户信息进行后置处理,具体可以包括以下步骤:
[0074]
首先,判断当前微服务是否需要进行接口访问日志记录;
[0075]
若当前微服务需要进行接口访问日志记录(如获取配置文件的配置项auth.useapilog,如果为true表示需要进行接口访问日志记录),则判断前置处理中是否标记当前接口定义;
[0076]
若未标记,则重新判断是否需要获取所有接口定义,获取当前接口定义信息;其中未标记的原因可能包括未开启接口权限验证,后续需要获取当前接口定义(不验证接口权限但记录接口调用);未匹配到相应接口定义,接口未在lark-admin中进行接口定义,后续返回接口执行结果到系统用户;
[0077]
若标记,则从请求对象(对于java为httpservletrequest)中获取接口编码(属性apicode的值),通过接口编码从所有接口定义中获取匹配的接口定义;
[0078]
若当前微服务无需进行接口访问日志记录(如获取配置文件的配置项auth.useapilog,如果为false表示无需进行接口访问日志记录),则返回接口执行结果到系统用户;
[0079]
之后,判断接口定义中是否需要记录日志;
[0080]
若需要记录日志(如接口定义中islog属性为true表示记录日志),则构造日志对象,并将日志对象通过feign发送到日志服务;若无需记录日志(如接口定义中islog属性为false表示不记录日志),则返回接口执行结果到系统用户。
[0081]
具体地,构造日志对象可以使用接口定义、用户信息、时间戳等进行构造,接口日志信息自动格式化,而非输出文本。日志对象属性可以包括所属菜单(业务模块)、接口名称(操作)、接口定义地址、接口定义请求方式、客户端信息(useragent来自客户端)、实际请求地址(带path参数值)、客户端ip(来自客户端)、请求时间(long类型时间戳)、请求用户id(来自token)、请求用户名称(来自token)、请求用户租户(来自token)。
[0082]
在实际应用中,在构造日志对象之后,可以判断原接口处理执行是否抛出异常。后置拦截器中有一个参数exception,抛出异常则该值不为空,若参数exception为空则将日志对象通过feign发送到lark-log。如果参数exception不为空,获取其属性值message,赋值给日志对象的属性exception属性,并将日志对象通过feign发送到lark-log。
[0083]
在具体实施时,在本发明实施例提供的上述接口访问日志采集记录查询方法中,在执行步骤s105写入数据库之后,还可以包括:将存储状态返回至业务系统微服务(只获取返回状态,不获取任何返回值),以返回接口执行结果给系统用户;之后,通过业务系统微服务判断feign降级处理是否捕获到请求异常;若捕获到请求异常,则打印异常信息到服务日
志文件。这样实现异常检测及显示的目的。
[0084]
feign降级处理代码在lark-auth-client库中,业务系统开发人员不再需要编写相关代码。本发明中主要处理失败次数降级,主要是一些不稳定的api,当失败调用次数达到一定阀值自动降级,同样要使用异步机制探测回复情况。另外,服务日志使用logback,通过spring-boot-starter-logging库集成到springboot服务中。
[0085]
需要指出的是,在本发明中,关于业务系统微服务项目配置,接入简单,业务系统开发人员只需要引入库和配置拦截器,不需要再额外编写接口日志的生成和输出。
[0086]
新建业务系统微服务项目,项目必须基于springcloud、springboot、springmvc搭建。
[0087]
业务系统微服务项目引入lark-auth-client库。
[0088]
以maven管理项目依赖为例
[0089]
《dependency》
[0090]
《groupid》com.mht.lark《/groupid》
[0091]
《artifactid》lark-auth-client《/artifactid》
[0092]
《version》3.2《/version》
[0093]
《/dependency》
[0094]
业务系统微服务项目中配置接口访问日志拦截器。
[0095]
使用spring中org.springframework.context.annotation.configuration注释定义配置。
[0096]
构造com.mht.lark.security.auth.client.interceptor.apiauthrestinterceptor类(接口访问日志拦截器定义在lark-auth-client库中)实例apiauthrestinterceptor。将实例apiauthrestinterceptor注册到类org.springframework.web.servlet.config.annotation.interceptorregistry实例中使用interceptorregistry的方法addinterceptor。
[0097]
接口访问日志拦截器要晚于用户信息拦截器注册到interceptorregistry中,晚注册后执行,保证先解析用户信息在记录用户接口调用行为。
[0098]
在具体实施时,在本发明实施例提供的上述接口访问日志采集记录查询方法中,在执行s106接收查询请求之前,还可以包括以下步骤:
[0099]
管理员使用浏览器打来日志查询页面(菜单“操作日志”),页面加载完成后js发送请求到lark-admin获取当前所有业务系统;
[0100]
lark-admin接收到请求后从数据库中读取已添加的所有业务系统信息,以json集合形式返回到浏览器;
[0101]
浏览器接收到返回的所有业务系统数据后,使用js将业务系统数据渲染为select下拉选择。等待管理员选择业务系统;
[0102]
管理员选择业务系统后,js监听到select选择值改变自动发送请求到lark-admin获取业务系统下微服务信息,携带参数业务系统id;
[0103]
lark-admin接收到请求后根据业务系统id从数据库中获取业务系统下所有微服务信息,以json集合形式返回到浏览器;
[0104]
浏览器接收到返回的业务系统下所有微服务数据后,使用js将业务系统数据渲染
为select下拉选择。等待管理员选择微服务;
[0105]
管理员选择微服务后,js监听到select选择值改变后渲染显示日期范围选择器和所属模块输入框;日期范围选择器值必填不允许为空,因为日志分表存储分表字段为时间,如果不传时间查询所有表数据进行分页内存和时间成本高。默认日期范围选择器的值开始日期和结束日期均为当天;菜单“操作日志”在线查询时间最大范围为最近两个月,即一次查询最多从两个表中查询数据、排序、分页;超出最近两个月范围的则按表名查询。需要在菜单“操作日志表”中选择具体某个历史表查询数据,每次最多只会在一个表中查询。所属模块输入框非必填;
[0106]
管理员点击“查询”,js发送请求到lark-log分页查询日志,携带参数微服务名、开始日期、结束日期、用户token、所属功能模块或菜单(非必须)、页码、每页大小;开始日期、结束日期为字符串类型格式yyyy-mm-dd。
[0107]
接下来,lark-log接收到请求后,先计算时间范围,将字符串日期转为时间戳毫秒数。结束日期需要再加一天。
[0108]
在具体实施时,在本发明实施例提供的上述接口访问日志采集记录查询方法中,步骤s106通过日志服务生成并重构查询sql,具体可以包括:
[0109]
首先,通过日志服务根据查询条件生成查询sql(原查询语句);查询条件可以包括微服务名字段=微服务名and请求时间字段》=开始时间戳and请求时间字段《结束时间戳and租户字段=用户租户id。如果所属模块存在条件还要追加:and所属模块字段like

%所属模块%’。排序按对象id倒排;
[0110]
然后,利用分页拦截器重构查询sql,将查询sql的查询语句变为总数查询语句;或,使用总数、页码、每页大小重构查询sql,将查询sql的查询语句变为分页查询语句。
[0111]
具体地,分页拦截器先重构sql,将原查询语句变为总数查询语句,执行总数查询语句获得满足条件的总数。根据查询语句中时间范围计算要查询的表名,最多两个表。使用真实表名替换逻辑表名得到真实可执行总数查询语句。如果是两个表,则得到两个真实可执行总数查询语句。如果只有一条真实可执行总数查询语句则直接发给数据库查询总数。如果不止一条真实可执行总数查询语句则并行执行多条sql,获得多个总数。然后相加求和得到最终总数。而使用总数、页码、每页大小重构sql,将原查询语句变为分页查询语句。执行分页查询语句。根据查询语句中时间范围计算要查询的表名,最多两个表。使用真实表名替换逻辑表名得到真实可执行查询语句。如果是两个表,则得到两个真实可执行查询语句。执行真实可执行查询语句。如果只有一条真实可执行查询语句则直接发给数据库查询、排序、分页处理。如果不止一条真实可执行查询语句则先将语句中分页信息去掉然后并行执行多条sql,获得多个集合。按表名倒排合并集合,然后按分页信息获取子集。最后,总数和当前页的集合以json对象形式返回到浏览器。
[0112]
相应地,本发明实施例还公开了一种接口访问日志采集记录查询设备,包括处理器和存储器;其中,处理器执行存储器中存储的计算机程序时实现前述实施例公开的接口访问日志采集记录查询方法。
[0113]
关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0114]
进一步地,本发明还公开了一种计算机可读存储介质,用于存储计算机程序;计算
机程序被处理器执行时实现前述公开的接口访问日志采集记录查询方法。
[0115]
关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0116]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的设备、存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0117]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0118]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0119]
综上,本发明实施例提供的一种接口访问日志采集记录查询方法,包括:在线统一管理多个业务系统的接口信息和授权;接收携带token的接口请求,采用用户信息拦截器解析token,获取用户信息并存入线程本地变量;采用接口访问日志拦截器依次对用户信息进行前置处理和后置处理,以获取权限信息,访问相应的接口来构造日志对象并发送至日志服务;在日志服务接收到日志对象的写请求后,为日志对象生成唯一id,并将日志对象存入队列;通过日志服务中单独的线程循环批量从队列中取出日志对象,写入数据库;接收查询请求,通过日志服务生成并重构查询sql,根据重构后的查询sql的查询语句进行数据库的日志查询。这样开发人员只需要编写接口逻辑,无需额外编码对接接口访问日志,就可以自动生成结构化数据,存储到结构化数据库中,并且直接使用sql进行查询,无需额外进行数据处理。此外,本发明还针对接口访问日志采集记录查询方法提供了相应的设备及计算机可读存储介质,进一步使得上述方法更具有实用性,该设备及计算机可读存储介质具有相应的优点。
[0120]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0121]
以上对本发明所提供的接口访问日志采集记录查询方法、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依
据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献