本文件涉及数据处理,尤其涉及一种可读性操作日志记录系统及方法。
背景技术:
1、操作日志是用于记录用户对系统的某个对象进行操作的日志,主要提供给业务人员或者用户查看,可读性要求较强。现有的操作日志的记录,通常是通过日志文件的方式记录,这种操作日志的记录方式需要与业务代码强耦合,这导致当业务变得复杂后,记录操作日志放在业务代码中会导致业务的逻辑比较繁杂,导致操作日志的方法调用存在于很多业务的代码中,被记录的操作日志的可读性及维护性都会变得困难。
2、当通过切面加注解固定模板化的记录操作日志时,操作日志的详细记录都是以http参数的方式进行记录,因为参数多为开发人员定义的名称,无法与业务实体进行关联,照成操作日志只有开发人员可以看懂,业务人员根本无法读懂。而且对于修改的操作,只能记录此次修改的值,不能与修改前的值进行对比,在进行操作追溯的时候,没有办法精准的进行判断。
技术实现思路
1、本说明书一个或多个实施例提供了一种可读性操作日志记录系统,包括:
2、日志收集模块,用于抓取客户端的请求信息;
3、日志生成模块,用于将所述请求信息根据动态模板让变量通过占位符解析生成操作日志;
4、日志生产消费模块,用于将生成的所述操作日志发送给日志存储模块;
5、日志存储模块,用于对所述操作日志进行保存;
6、日志检索模块,用于根据用户检索向用户提供对应的操作日志,并将检索的操作日志进行导出报表记录。
7、进一步地,所述日志收集模块具体用于:
8、基于日志采集模块通过springboot-starter方法采集各个业务模块的请求信息;
9、根据所述请求信息,基于spring aop的切面拦截技术,进行操作日志记录拼装。
10、进一步地,所述操作日志的数据结构包括:系统服务模块信息、操作人信息、操作类型、执行结果、标题和可读性操作内容;其中,系统服务模块按照业务类型进行统一编码,操作类型根据http协议的类型进行强约束,明确定义操作的类型及含义;可读性操作内容根据日志动态模版和属性值进行组装。
11、进一步地,所述日志生成模块具体用于:
12、通过获取http header中的token信息,向认证鉴权中心发起请求,鉴权成功后返回操作人信息及操作人的部门信息;
13、通过http请求协议,调用httpservletrequest的api获取对方真实ip信息;
14、通过读取springboot的配置文件获取业务服务信息,所述服务信息包括服务名称;
15、通过http请求协议,调用httpservletrequest的api获取操作类型信息;
16、通过http请求协议,调用httpservletrequest的api获取请求url信息;
17、通过java reflect机制获取方法信息;
18、基于日志模板,根据spring表达式语言spel针对不同的操作对象预写出含有占位符的详情,当接收到业务请求信息时,将接收到的业务请求信息替换所述日志模版中的占位符,组装得到可读性极高的日志。
19、进一步地,操作日志调用的具体方法为:通过参数获取或通过注解获取;其中,通过参数获取为手动调用,所有参数均通过方法参数进行指定;通过注解获取为在业务层类代码中加入注解,通过切面统一获取日志信息。
20、进一步地,所述日志生产消费模块具体用于:
21、采用java先入先出fifo队列为日志队列;
22、判断当前rocketmq连接可用则检查日志队列中是否生成日志信息,如果有生成日志信息,则消费日志队列,将日志信息存储到数据库中,消费完成后继续对日志队列进行监听,重复执行。
23、进一步地,所述日志检索模块具体用于:
24、提供日志检索管理后台页面;
25、提供通用restfulapi,为其他调用方提供通用的接口能力;
26、提供日志导出能力,根据检索请求按请求时间、获取模块、操作类型以及操作人员维度导出日志报表。
27、进一步地,所述日志采集模块安装于客户端,所述日志采集模块采集的日志信息包括操作模块、操作类型、执行结果、标题和操作数据中的一种或数种。
28、本说明书一个或多个实施例提供了一种可读性操作日志记录方法,包括:
29、抓取客户端的请求信息;
30、将所述请求信息根据动态模板让变量通过占位符解析生成操作日志;
31、将生成的所述操作日志进行保存;
32、根据用户检索向用户提供对应的操作日志,并将检索的操作日志进行导出报表记录。
33、采用本发明实施例,基于可读性操作日志实现系统实现了日志操作功能的抽象与解耦,通过组件的方式统一维护,方便且易于扩展;减少了项目中的的冗余代码,将操作日志的处理工作,与业务代码进行解耦,方便代码维护;采用了消息中间件,进一步进行解耦,异步,削峰,提高了系统的性能;操作日志的文本内容可高度自定义,可读性极强,可以对修改前后的数据进行对照,方便数据链路的追踪;操作日志结构统一,利于日志的存储与统计,不限制数据库类型,关系型数据库与非关系型数据库都可以进行存储,对业务系统透明无依赖;提供了日志管理后台与restfulapi,并提供导出报表能力,方便日志管理,以及第三方数据查询。
34、上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
1.一种可读性操作日志记录系统,其特征在于,包括:
2.根据权利要求1所述的系统,其特征在于,所述日志收集模块具体用于:
3.根据权利要求2所述的系统,其特征在于,所述操作日志的数据结构包括:系统服务模块信息、操作人信息、操作类型、执行结果、标题和可读性操作内容;其中,系统服务模块按照业务类型进行统一编码,操作类型根据http协议的类型进行强约束,明确定义操作的类型及含义;可读性操作内容根据日志动态模版和属性值进行组装。
4.根据权利要求3所述的系统,其特征在于,所述日志生成模块具体用于:
5.根据权利要求2所述的系统,其特征在于,操作日志调用的具体方法为:通过参数获取或通过注解获取;其中,通过参数获取为手动调用,所有参数均通过方法参数进行指定;通过注解获取为在业务层类代码中加入注解,通过切面统一获取日志信息。
6.根据权利要求1所述的系统,其特征在于,所述日志生产消费模块具体用于:
7.根据权利要求1所述的系统,其特征在于,所述日志检索模块具体用于:
8.根据权利要求2所述的系统,其特征在于,所述日志采集模块安装于客户端,所述日志采集模块采集的日志信息包括操作模块、操作类型、执行结果、标题和操作数据中的一种或数种。
9.一种可读性操作日志记录方法,其特征在于,包括:
10.根据权利要求9所述的方法,其特征在于,操作日志的数据结构包括:系统服务模块信息、操作人信息、操作类型、执行结果、标题和可读性操作内容。