基于分布式部署环境下异步监控客户端操作日志的方法转让专利

申请号 : CN202210457945.0

文献号 : CN114780348B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 鲜青林邓文科李佳航朱兴华宋舰曾辉

申请人 : 四川虹魔方网络科技有限公司

摘要 :

本发明公开了基于分布式部署环境下异步监控客户端操作日志的方法,基于Maven+SpringBoot搭建web项目公共包,创建自定义日志标签接口、事件处理模型、事件生成器接口;创建基于SpringAop的切面编程类,并将自定义日志标签接口作为切入点进行拦截、处理操作日志读取问题;创建操作日志事件生成器类,并在事件生成处理方法中创建新的线程将包含操作日志的事件处理模型写入到redis队列中;将web项目公共包中封装成一个公共Jar,处理操作日志事件并持久化到数据库。在业务与日志记录数据库不对外开放、不影响管理人员正常业务流程处理的情况下,异步、安全、完整的记录下客服端对服务器的请求操作。

权利要求 :

1.一种基于分布式部署环境下异步监控客户端操作日志的方法,其特征在于,包括:

步骤A、基于Maven+SpringBoot搭建web项目公共包,在web项目公共包中创建自定义日志标签接口SysLog、事件处理模型javaBean、事件生成器接口interface eventproducer;

步骤B、在web项目公共包中创建基于SpringAop的切面编程类,并将自定义日志标签接口SysLog作为切入点进行拦截,并使用环绕通知方式,处理操作日志读取问题;

步骤C、通过事件生成器接口interface eventproducer创建操作日志事件生成器类LogEventProducer,并在事件生成处理方法exect()中创建新的线程将包含操作日志的事件处理模型javaBean写入到redis队列中;

步骤D、将web项目公共包中封装成一个公共Jar,用于其他微服务管理工程引入,在需要进行操作日志记录点添加注解标签标记@SysLog完成对操作日志的收集记录;

步骤E、处理操作日志事件并持久化到mysql数据库,具体包括:

步骤E1、创建SpringBoot的web工程morefun‑consumer,web工程morefun‑consumer用于处理操作日志事件并持久化到mysql数据库;

步骤E2、在web工程morefun‑consumer中定义事件处理器接口interface EventHandler并声明事件处理方法doHander;以及定义事件处理分发器接口interface EventDispatcher并声明事件分发器处理方法;事件处理分发器接口interface EventDispatcher创建操作日志事件处理分发器类LogEventDispatcher,用于实现分配方法dispatcher的业务处理逻辑;事件处理器接口interface EventHandler创建操作日志处理事件类LogEventHandler;创建新的线程监听redis消息队列中的存储事件,以及调用操作日志处理事件类LogEventHandler中的事件处理方法doHander完成对操作日志的处理并持久化到MySql数据库中。

2.根据权利要求1所述的基于分布式部署环境下异步监控客户端操作日志的方法,其特征在于,所述步骤A具体包括:步骤A1、基于Maven+SpringBoot搭建web项目公共包,在web项目公共包中创建自定义日志标签接口SysLog,在自定义日志标签接口SysLog中声明属性,用于说明当前操作详情;

步骤A2、在web项目公共包中创建事件处理模型javaBean,事件处理模型javaBean用于将从客户端传输到服务的请求转化为事件处理模型对象;

步骤A3、在web项目公共包中创建事件生成器接口interface eventproducer,并声明事件生成处理方法exect()。

说明书 :

基于分布式部署环境下异步监控客户端操作日志的方法

技术领域

[0001] 本发明涉及操作日志监控技术领域,具体的说,是一种基于分布式部署环境下异步监控客户端操作日志的方法。

背景技术

[0002] 在微服务化背景模式下,各个管理系统可分布式部署在不同的服务器上,管理员用户通过一个登录入口进入到管理平台,进行操作各个微服务业务管理系统。需要对使用管理平台的用户操作进行监控时,管理平台的用户通过客户端对服务器发出服务请求,对请求内容进行监控并记录,即需要记住使用管理平台的用户的操作日志,保证请求的系统的安全性以及可溯源性。但是现有技术中尚没有一种监控客户端操作日志的方法,能够实现在不影响业务操作的前提下完整的记录下客户端发起的服务请求。

发明内容

[0003] 本发明的目的在于提供一种基于分布式部署环境下异步监控客户端操作日志的方法,用于解决现有技术中尚没有一种监控客户端操作日志的方法,能够实现在不影响业务操作的前提下完整的记录下客户端发起的服务请求的问题。
[0004] 本发明通过下述技术方案解决上述问题:
[0005] 一种基于分布式部署环境下异步监控客户端操作日志的方法,包括:
[0006] 步骤A、基于Maven+SpringBoot搭建web项目公共包,在web项目公共包中创建自定义日志标签接口SysLog、事件处理模型javaBean、事件生成器接口 interface eventproducer;
[0007] 步骤B、在web项目公共包中创建基于SpringAop的切面编程类,并将自定义日志标签接口SysLog作为切入点进行拦截,并使用环绕通知方式,处理操作日志读取问题;
[0008] 步骤C、通过事件生成器接口interface eventproducer创建操作日志事件生成器类LogEventProducer,并在事件生成处理方法exect()中创建新的线程将包含操作日志的事件处理模型javaBean写入到redis队列中;
[0009] 步骤D、将web项目公共包中封装成一个公共Jar,用于其他微服务管理工程引入,在需要进行操作日志记录点添加注解标签标记@SysLog完成对操作日志的收集记录;
[0010] 步骤E、处理操作日志事件并持久化到mysql数据库。
[0011] 本发明采用异步消息队列方式处理并记录用户日志,不影响正常的业务操作并且能完整的记录下客户端发起的服务请求;采用redis作为日志消息队列中间存储服务器,满足在分布式部署环境状态下日志保存数据库以及各个微服务系统不对外开放;结合面向切面编程和标签化编程,简化开发过程;确保数据的安全性、完整性以及业务微服务之间的松耦合性。
[0012] 所述步骤A具体包括:
[0013] 步骤A1、基于Maven+SpringBoot搭建web项目公共包,在web项目公共包中创建自定义日志标签接口SysLog,在自定义日志标签接口SysLog中声明属性,用于说明当前操作详情;
[0014] 步骤A2、在web项目公共包中创建事件处理模型javaBean,事件处理模型 javaBean用于将从客户端传输到服务的请求转化为事件处理模型对象;
[0015] 步骤A3、在web项目公共包中创建事件生成器接口interface eventproducer,并声明事件生成处理方法exect()。
[0016] 所述步骤E具体包括:
[0017] 步骤E1、创建SpringBoot的web工程morefun‑consumer,web工程 morefun‑consumer用于处理操作日志事件并持久化到mysql数据库;
[0018] 步骤E2、在web工程morefun‑consumer中定义事件处理器接口interface EventHandler并声明事件处理方法doHander;以及定义事件处理分发器接口 interface EventDispatcher并声明事件分发器处理方法;事件处理分发器接口  interface EventDispatcher创建操作日志事件处理分发器类LogEventDispatcher,用于实现分配方法dispatcher的业务处理逻辑;事件处理器接口interface EventHandler创建操作日志处理事件类LogEventHandler;创建新的线程监听 redis消息队列中的存储事件,以及调用操作日志处理事件类LogEventHandler 中的事件处理方法doHander完成对操作日志的处理并持久化到MySql数据库中。
[0019] 本发明与现有技术相比,具有以下优点及有益效果:
[0020] 本发明在管理系统微服务化背景模式下,各个管理系统可分布式部署在不同的服务器上,保证程序和数据的安全性;业务与日志记录数据库不对外开放情况下,同时在不影响管理人员正常业务流程处理的情况下,异步、安全、完整的记录下客服端对服务器的请求操作。

附图说明

[0021] 图1为本发明的流程图。

具体实施方式

[0022] 下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
[0023] 实施例:
[0024] 结合附图1所示,一种基于分布式部署环境下异步监控客户端操作日志的方法,包括:
[0025] 步骤S1、基于Maven+SpringBoot搭建web项目公共包,例如取名为 morefun‑commom,在morefun‑commom包中通过自定义注解@interface创建自定义日志标签接口SysLog,在自定义日志标签接口中声明属性,用于说明当前操作详情;例如:
[0026] String module()default"";//所属微服务系统
[0027] String value()default"";//业务操作描述
[0028] 步骤S2、在morefun‑commom包中创建事件处理模型javaBean,事件处理模型javaBean用于将从客户端传输到服务的请求转化为事件处理模型对象,方便统一管理并存储到redis中;例如:
[0029] private int type;//事件的类型
[0030] private String jsonObject;//事件JSON对象
[0031] private String systemType;//触发事件的系统
[0032] private Mapextra=new HashMap<>();//附加数据[0033] 步骤S3、在morefun‑commom包中创建事件生成器接口interface  eventproducer,并声明事件生成处理方法exect();
[0034] boolean exect(final EventModel eventModel);
[0035] 步骤S4、在morefun‑commom包中创建基于SpringAop的切面编程类,并将自定义日志标签接口SysLog作为切入点进行拦截,并使用环绕通知方式,处理操作日志读取问题;
[0036] @Pointcut("@annotation(com.cms.common.annotation.SysLog)")//这个是切面的切入点
[0037] public void logPointCut(){
[0038] }
[0039] @Around("logPointCut()")//这个标签就标志着这个是一个环绕通知的方式[0040] public Object around(ProceedingJoinPoint point){
[0041] point.proceed()//执行主业务
[0042] //将需要记录的操作日志信息转换为事件模型对象
[0043] EventModel eventModel=new EventModel(EventType.LOG);
[0044] eventModel.setJsonObject(JSONObject.toJSONString(sysLogDto));
[0045] //将带有操作日志的事件模型进行创建事件
[0046] eventProducer.exect(eventModel);
[0047] }
[0048] 步骤S5、在morefun‑commom包中通过事件生成器接口interface  eventproducer创建操作日志事件生成器类LogEventProducer,并在事件生成处理方法exect()中创建新的线程将包含操作日志的事件处理模型javaBean写入到 redis队列中,将创建的所有的事件处理模型javaBean全部写入到redis中,通过其中定义的属性private int type(事件的类型),来区分该事件是否属于操作日志的事件;
[0049]
[0050] 步骤S6、将morefun‑common包中封装成一个公共Jar,用于其他微服务管理工程引入,在需要进行操作日志记录点添加注解标签标记@SysLog完成对操作日志的收集记录;
[0051] @SysLog(module="统一登录平台",value="用户登录")
[0052] public JSONObject authLogin(){
[0053] }
[0054] 以上是日志事件收集工作,以下为日志事件持久化工作。
[0055] 步骤S7、创建SpringBoot的web工程morefun‑consumer,web工程 morefun‑consumer用于处理操作日志事件并持久化到mysql数据库;
[0056] 步骤S8、在web工程morefun‑consumer中定义事件处理器接口interface  EventHandler并声明事件处理方法doHander;
[0057] void doHander(EventModel model)
[0058] 以及定义事件处理分发器接口interface EventDispatcher并声明事件分发器处理方法;
[0059] void dispatcher(int type,ListeventHandlerList);
[0060] 事件处理分发器接口interface EventDispatcher创建操作日志事件处理分发器类LogEventDispatcher,用于实现分配方法dispatcher的业务处理逻辑;创建新的线程,进行监听redis消息队列中的存储的事件。通过调用操作日志处理事件类LogEventHandler中的事件处理方法doHander完成对操作日志的处理。这个是监听redis中的事件,如果redis中有日志事件,则按照步骤9进行处理;
[0061]
[0062]
[0063] 步骤9、在morefun‑consumer工程中实现事件处理器接口interface EventHandler创建操作日志处理事件类LogEventHandler;并在事件处理方法 doHander中完成对操作日志业务操作并持久化到MySql数据库中。
[0064]
[0065] 采用异步消息队列方式处理并记录用户日志,不影响正常的业务操作并且能完整的记录下客户端发起的服务请求;采用redis作为日志消息队列中间存储服务器,满足在分布式部署环境状态下日志保存数据库以及各个微服务系统不对外开放;结合面向切面编程和标签化编程,简化开发过程;确保数据的安全性、完整性以及业务微服务之间的松耦合性。
[0066] 尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。