本发明实施例涉及领域,具体涉及一种记录操作日志的方法、装置、电子设备和存储介质。
背景技术:
现有技术中,操作日志主要记录以下信息:操作人、操作时间、操作类型、操作对象、操作前数据,操作后数据六个部分,主要用于审核审计工作。记录操作日志的主要方法可以通过面向切面编程的方式,拦截操作数据库的新增、修改、删除三种操作。其中操作人、操作时间,操作类型、操作对象、修改后数据通过请求信息可以获取,修改前数据则可以通过sql查询的方式从数据库读取。
发明人在实现本发明的过程中发现:基于面向切面编程记录操作日志,操作前数据必须通过sql查询的方式从数据库读取,这样每次记录操作日志都需要多查询一次数据库,存在效率低下的问题。
技术实现要素:
为了解决现有技术存在的记录操作日志效率低下的问题,
第一方面,本发明的至少一个实施例提供了一种记录操作日志的方法,包括:
web应用程序接收到用户的操作请求后,生成链路跟踪标识并调用至少一个业务服务层,web应用程序携带登陆信息;
调用至少一个业务服务层后,web应用程序将链路跟踪标识和登陆信息发送至至少一个业务服务层,至少一个业务服务层接收到链路跟踪标识和登陆信息后,执行服务操作请求的逻辑代码并组装第一结构化查询语言语句,业务服务层的拦截器将链路跟踪标识和登陆信息拼接为第一结构化查询语言注释语句;
数据库管理系统中的二进制日志文件记录第一结构化查询语言语句、第一结构化查询语言语句执行前数据的值以及第一结构化查询语言语句执行后数据的值。
在一些实施例中,上述方法还包括:
读取二进制日志文件得到第一操作日志信息;
解析二进制日志文件后,异步缓存第一操作日志信息。
在一些实施例中,上述方法还包括:
订阅异步缓存第一操作日志信息,将第一操作日志信息组装为第二操作日志信息;
将第二操作日志信息存储到搜索引擎。
在一些实施例中,上述方法还包括:
接收到搜索引擎查询第二操作日志信息的触发操作时;
显示第二操作日志信息。
在一些实施例中,上述方法中的第一操作日志信息和第二操作日志信息均包括:操作人、操作时间、操作的对象、操作前数据、操作后数据、全局链路跟踪标识。
第二方面,本发明实施例提供了一种记录操作日志的装置,包括:
接收和调用模块,用于web应用程序接收到用户的操作请求后,生成链路跟踪标识并调用至少一个业务服务层,web应用程序携带登陆信息;
发送和执行模块,用于调用至少一个业务服务层后,web应用程序将链路跟踪标识和登陆信息发送至至少一个业务服务层,至少一个业务服务层接收到链路跟踪标识和登陆信息后,执行服务操作请求的逻辑代码并组装结构化查询语言语句,业务服务层的拦截器将链路跟踪标识和登陆信息拼接为结构化查询语言语句的注释部分;
记录模块:数据库管理系统中的二进制日志文件记录第一结构化查询语言语句、第一结构化查询语言语句执行前数据的值以及第一结构化查询语言语句执行后数据的值。
在一些实施例中,上述装置还包括:
读取模块:用于读取二进制日志文件得到第一操作日志信息;
解析模块:用于解析二进制日志文件后,异步缓存第一操作日志信息。
在一些实施例中,上述装置还包括:
订阅模块:用于订阅异步缓存第一操作日志信息,将第一操作日志信息组装为第二操作日志信息;
存储模块:用于将第二操作日志信息存储到搜索引擎。
第三方面,本发明实施例提供了一种电子设备,包括:处理器和存储器;
处理器通过调用存储器存储的程序或指令,用于执行如上述记录操作日志方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储程序或指令,程序或指令使计算机执行上述记录操作日志方法的步骤。
本发明实施例的优点在于:web应用程序接收到用户的操作请求后,生成链路跟踪标识并调用业务服务层,web应用程序携带登陆信息;web应用程序将链路跟踪标识和登陆信息发送业务服务层,业务服务层执行操作请求的逻辑代码并组装结构化查询语言语句,业务服务层的拦截器将链路跟踪标识和登陆信息拼接为结构化查询语言语句的注释部分;数据库管理系统中的日志文件记录结构化查询语言语句及操作前数据的值、操作后数据的值。本发明通过链路跟踪标识跟踪操作,拦截器拼接执行的sql语句,并结合数据库管理系统中的日志文件记录操作日志的信息,不仅通用性强,而且对已有的业务侵入少,没有额外的编码工作,提升了效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提出的一种记录操作日志的方法的流程示意图之一;
图2为本发明实施例提出的一种记录操作日志的方法的流程示意图之二;
图3为本发明实施例提出的一种记录操作日志的方法的流程示意图之三;
图4为本发明实施例提出的一种记录操作日志的方法的流程示意图之四;
图5为本发明实施例提出的一种记录操作日志的装置的结构示意图;
图6为本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。基于所描述的本发明的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
图1为本发明实施例提出的一种记录操作日志的方法的流程示意图之一。
第一方面,结合图1,本发明的至少一个实施例提供了一种记录操作日志的方法,包括如下三个步骤:
s101:web应用程序接收到用户的操作请求后,生成链路跟踪标识并调用至少一个业务服务层,web应用程序携带登陆信息。
具体的,本申请实施例中,web应用程序可以是包括:浏览器、淘宝、京东等应用程序,在接收到服务操作请求,这里的用户的操作请求可以是用户通过手机、移动端添加信息、删除信息、修改信息等操作请求,生成链路跟踪标识,这里的链路跟踪标识是唯一的,并调用至少一个业务服务层,可能依次调用多个业务服务层服务,web应用程序携带登陆信息,这里的登陆信息可以是登陆id,用户名等。
s102:调用至少一个业务服务层后,web应用程序将链路跟踪标识和登陆信息发送至至少一个业务服务层,至少一个业务服务层接收到链路跟踪标识和登陆信息后,执行操作请求的逻辑代码并组装结构化查询语言语句,业务服务层的拦截器将链路跟踪标识和登陆信息拼接为结构化查询语言语句的注释部分。
具体的,本申请实施例中,web应用程序可能依次调用多个业务服务层服务,并将相同的链路跟踪标识和登陆信息传递给不同的业务服务,当其中一个业务服务层接收到链路跟踪标识和登陆信息后,执行操作请求的逻辑代码并组装结构化查询语言语句,这里的结构化查询语言语句是sql语句,业务服务层集成了logmybatisinterceptor,是一个轻量级拦截器,用于修改业务服务层组装生成的sql语句。组装结构化查询语言语句后经过logmybatisinterceptor的拦截处理,该拦截器将来自web应用程序的链路跟踪标识和登陆信息生成结构化查询语言语句的注释部分,将注释部分拼接到原有的结构化查询语言语句,即原有的结构化查询语言语句中是由业务服务层生成的,拦截器将这段语句进行了强化,注释部分不会影响执行结果,可以携带操作人信息,拦截器至是在原来的sql语句前面拼接了注释语句,例如业务服务执行的sql语句原来是:updateusersetname=“张三”whereid=1;经过拦截器处理后(拼接后):/*@189029,2599306654235230208@*/updateusersetname=“张三”whereid=1;而这里189029就是操作人id2599306654235230208是链路跟踪标识,代表一次请求的唯一标识。
s103:数据库管理系统中的二进制日志文件记录结构化查询语言语句、结构化查询语言语句操作前数据的值以及结构化查询语言语句操作后数据的值。
具体的,本申请实施例中,在数据库管理系统中,数据库管理系统即mysql的二进制文件binlog会记录执行的sql语句,本申请中需要设置binlog_rows_query_log_events为on,以及sql语句操作前数据的值以及操作后数据的值,本申请中需要设置binlog_row_image为full。
图2为本发明实施例提出的一种记录操作日志的方法的流程示意图之二。
在一些实施例中,结合图2,上述方法还包括:
s201:读取二进制日志文件得到第一操作日志信息;
具体的,本申请实施例中通过读取二进制日志文件binlog即得到操作人、操作时间、操作的对象、操作前数据、操作后的数据、全局链路跟踪标识,操作日志信息都可以通过mysqlbinlog读取。
s202:解析二进制日志文件后,异步缓存第一操作日志信息。
具体的,本申请实施例中解析二进制日志文件binlog,由于binlog是二进制文件,直接使用calnal解析操作日志信息而不使用mysqlbinlog协议,因为二进制日志文件binlog文件包含的信息量很大,异步缓存第一操作日志信息使用kafka消息队列,使得第一操作日志信息达到异步、缓冲的效果。
图3为本发明实施例提出的一种记录操作日志的方法的流程示意图之三。
在一些实施例中,结合图3,上述方法还包括:
s301:订阅异步缓存第一操作日志信息,将第一操作日志信息组装为第二操作日志信息;
具体的,本发明实施例中订阅消息队列异步缓存的操作日志信息后,可以根据不同的日期组装为第二操作日志信息。
s302:将第二操作日志信息存储到搜索引擎。
具体的,本发明实施例中将第二操作日志信息可以存储到elasticsearch搜索引擎里,后期可以通过查询elasticsearch到达日志查询效果。
图4为本发明实施例提出的一种记录操作日志的方法的流程示意图之四。
在一些实施例中,上述方法还包括:
s401:接收到搜索引擎查询第二操作日志信息的触发操作时;
s402:显示第二操作日志信息。
具体的,本申请实施例中的触发操作可以是用户在搜索引擎输中入限定信息来查询,在搜索引擎的页面显示操作日志详情。
在一些实施例中,上述方法中的第一操作日志信息和第二操作日志信息均包括:操作人、操作时间、操作的对象、操作前数据、操作后数据、全局链路跟踪标识。
图5为本发明实施例提出的一种记录操作日志的装置的结构示意图。
第二方面,结合图5,本发明实施例提供了一种记录操作日志的装置,包括:
接收和调用模块501,接收模块用于web应用程序接收到服务操作请求后,生成链路跟踪标识,调用模块用于调用至少一个业务服务层,web应用程序携带登陆信息。
具体的,本申请实施例中,web应用程序可以是:浏览器、淘宝、京东等应用程序,接收模块接收到用户的操作请求,这里的操作请求可以是用户通过手机、移动端添加信息、删除信息、修改信息等操作请求,生成链路跟踪标识,这里的链路跟踪标识是唯一的,调用模块调用至少一个业务服务层,可能依次调用多个业务服务层服务,web应用程序携带登陆信息,这里的登陆信息可以是登陆id,用户名等。
发送和执行模块502,调用至少一个业务服务层后,发送模块用于web应用程序将链路跟踪标识和登陆信息发送至至少一个业务服务层,至少一个业务服务层接收到链路跟踪标识和登陆信息后,执行模块用于执行服务操作请求的逻辑代码并组装结构化查询语言语句,业务服务层的拦截器将链路跟踪标识和登陆信息拼接为结构化查询语言语句的注释部分。
具体的,本申请实施例中,web应用程序可能依次调用多个业务服务层服务,并将相同的链路跟踪标识和登陆信息传递给不同的业务服务,当其中一个业务服务层接收到链路跟踪标识和登陆信息后,执行操作请求的逻辑代码并组装结构化查询语言语句,这里的结构化查询语言语句是sql语句,业务服务层集成了logmybatisinterceptor,是一个轻量级拦截器,用于修改业务服务层组装生成的sql语句。组装结构化查询语言语句后经过logmybatisinterceptor的拦截处理,该拦截器将来自web应用程序的链路跟踪标识和登陆信息生成结构化查询语言语句的注释部分,将注释部分拼接到原有的结构化查询语言语句,即原有的结构化查询语言语句中是由业务服务层生成的,拦截器将这段语句进行了强化,注释部分不会影响执行结果,例如业务服务执行的sql语句原来是:updateusersetname=“张三”whereid=1;经过拦截器处理后(拼接后):/*@189029,2599306654235230208@*/updateusersetname=“张三”whereid=1;而这里189029就是操作人id2599306654235230208是链路跟踪标识,代表一次请求的唯一标识。
记录模块503:用于数据库管理系统中的二进制日志文件记录第一结构化查询语言语句、第一结构化查询语言语句执行前数据的值以及第一结构化查询语言语句执行后数据的值。
具体的,本申请实施例中,在数据库管理系统中,数据库管理系统即mysql的二进制文件binlog即记录模块记录执行的sql语句,本申请中需要设置binlog_rows_query_log_events为on,以及sql语句操作前数据的值以及操作后数据的值,本申请中需要设置binlog_row_image为full。
在一些实施例中,上述装置还包括:
读取模块:用于读取二进制日志文件得到第一操作日志信息。
具体的,本申请实施例中通过读取二进制日志文件binlog即得到操作人、操作时间、操作的对象、操作前数据、操作后的数据、全局链路跟踪标识,操作日志信息都可以通过mysqlbinlog读取。
解析模块:用于解析二进制日志文件后,异步缓存第一操作日志信息。
具体的,本申请实施例中解析二进制日志文件binlog,由于binlog是二进制文件,直接使用calnal解析操作日志信息而不使用mysqlbinlog协议,因为二进制日志文件binlog文件包含的信息量很大,异步缓存第一操作日志信息使用kafka消息队列,使得第一操作日志信息达到异步、缓冲的效果。
在一些实施例中,上述装置还包括:
订阅模块:用于订阅异步缓存第一操作日志信息,将第一操作日志信息组装为第二操作日志信息。
具体的,本发明实施例中订阅模块订阅消息队列异步缓存的操作日志信息后,可以根据不同的日期组装为第二操作日志信息。
存储模块:用于将第二操作日志信息存储到搜索引擎。
具体的,本发明实施例中存储模块将第二操作日志信息可以存储到elasticsearch搜索引擎里,后期可以通过查询elasticsearch到达日志查询效果。
第三方面,本发明实施例提供了一种电子设备,包括:处理器和存储器;
处理器通过调用存储器存储的程序或指令,用于执行如上述记录操作日志方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所计算机可读存储介质存储程序或指令,程序或指令使计算机执行上述记录操作日志方法的步骤。
图6为本发明实施例提供的电子设备的硬件结构示意图,如图6所示,该电子设备可以包括手机、pad的智能终端,该电子设备包括:
一个或多个处理器601,图6中以一个处理器601为例;存储器602;电子设备还可以包括:输入装置603和输出装置604。
电子设备中的处理器601、存储器602、输入装置603和输出装置604可以通过总线或者其他方式连接,图5中以通过总线连接为例。
存储器602作为一种非暂态计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的应用程序的界面显示方法对应的程序指令/模块(例如,附图5所示的接收和调用模块501、发送和执行模块502和记录模块503)。处理器601通过运行存储在存储器602中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的记录操作日志的方法。
存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置603可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置604可包括显示屏等显示设备。
本发明实施例还提供一种包含计算机可读存储介质,该计算机可读存储介质存储程序或指令,该程序或指令使计算机执行行时用于执行一种记录操作日志的方法,该方法包括:
web应用程序接收到服务操作请求后,生成链路跟踪标识并调用至少一个业务服务层,web应用程序携带登陆信息。
调用至少一个业务服务层后,web应用程序将链路跟踪标识和登陆信息发送至至少一个业务服务层,至少一个业务服务层接收到链路跟踪标识和登陆信息后,执行服务操作请求的逻辑代码并组装第一结构化查询语言语句,业务服务层的拦截器将链路跟踪标识和登陆信息拼接为第一结构化查询语言注释语句。
数据库管理系统中的二进制日志文件记录第一结构化查询语言语句、第一结构化查询语言语句执行前数据的值以及第一结构化查询语言语句执行后数据的值。
可选的,该计算机可执行指令在由计算机处理器执行时还可以用于执行本发明任意实施例所提供的记录操作日志的方法的技术方案。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
1.一种记录操作日志的方法,其特征在于,包括:
web应用程序接收到用户的操作请求后,生成链路跟踪标识并调用至少一个业务服务层,所述web应用程序携带登陆信息;
调用至少一个业务服务层后,web应用程序将所述链路跟踪标识和登陆信息发送至至少一个业务服务层,所述至少一个业务服务层接收到所述链路跟踪标识和登陆信息后,执行所述操作请求的逻辑代码并组装结构化查询语言语句,所述业务服务层的拦截器将所述链路跟踪标识和登陆信息拼接为结构化查询语句的注释部分;
数据库管理系统中的二进制日志文件记录所述结构化查询语言语句、所述结构化查询语言语句操作前数据的值以及所述结构化查询语言语句操作后数据的值。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
读取所述二进制日志文件得到第一操作日志信息;
解析所述二进制日志文件后,异步缓存第一操作日志信息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
订阅所述异步缓存第一操作日志信息,将所述第一操作日志信息组装为第二操作日志信息;
将所述第二操作日志信息存储到搜索引擎。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
接收到所述搜索引擎查询所述第二操作日志信息的触发操作时;
显示所述第二操作日志信息。
5.根据权利要求4所述的方法,其特征在于,所述第一操作日志信息和所述第二操作日志信息均包括:操作人、操作时间、操作的对象、操作前数据、操作后数据、全局链路跟踪标识。
6.一种记录操作日志的装置,其特征在于,包括:
接收和调用模块,用于web应用程序接收到用户的操作请求后,生成链路跟踪标识并调用至少一个业务服务层,所述web应用程序携带登陆信息;
发送和执行模块,用于调用至少一个业务服务层后,web应用程序将所述链路跟踪标识和登陆信息发送至至少一个业务服务层,所述至少一个业务服务层接收到所述链路跟踪标识和登陆信息后,执行所述用户的操作请求的逻辑代码并组装结构化查询语言语句,所述业务服务层的拦截器将所述链路跟踪标识和登陆信息拼接为结构化查询语句的注释部分;
记录模块:数据库管理系统中的二进制日志文件记录所述结构化查询语言语句、所述结构化查询语言语句操作前数据的值以及所述结构化查询语言语句操作后数据的值。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
读取模块:用于读取所述二进制日志文件得到第一操作日志信息;
解析模块:用于解析所述二进制日志文件后,异步缓存第一操作日志信息。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
订阅模块:用于订阅所述异步缓存第一操作日志信息,将所述第一操作日志信息组装为第二操作日志信息;
存储模块:用于将所述第二操作日志信息存储到搜索引擎。
9.一种电子设备,其特征在于,包括:包括:处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如权利要求1至5任一项所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如权利要求1至5任一项所述方法的步骤。
技术总结