本发明涉及软件管理技术和软件管理系统领域,具体涉及一种基于微服务的操作日志记录收集方法。
背景技术:
目前,大到网站,小到服务都需要记录用户操作日志。目前大部分应用都是由开发人员人为记录日志信息,保存到对应的数据存储空间中,供后期查询。
传统技术存在以下技术问题:
传统日志记录方式比较繁琐:传统的操作日志记录的时候,由开发人员自主记录本次操作涉及到的记录变化,导致大量的人力成本增加,且风格不统一;这个过程中,可能由于开发人员人为的疏忽、需求的变更或者表字段的变更都有可能导致日志不能满足后期的查询排错。
技术实现要素:
本发明要解决的技术问题是提供一种基于微服务的操作日志记录收集方法。
为了解决上述技术问题,本发明提供了一种基于微服务的操作日志记录收集方法,包括:
用户通过浏览器访问软件,在已经登录的前提下,点击某个模块下的某个操作:比如用户点击调拨出库单下的新增按钮;
为了实现操作日志的记录,在代码中需要启用操作日志记录;然后由系统产生该次操作的唯一标识txid;
在启用记录操作日志的前提下,前置操作日志自动产生;
开发人员需在操作对应的表中记录当前操作的标识txid,一次操作涉及到的所有表都需要记录该值。
在启用记录操作日志的前提下,后置操作日志自动产生;
前置操作日志、后置操作日志、数据变动日志都会进入消息中间件;
日志处理中心使用storm作为流式实时计算框架,主要负责消费消息中间件中的日志消息;
前置操作日志经由日志处理消息保存成为2种日志:
后置操作日志在本操作中直接处理;
数据变动日志经由日志处理中心保存成为数据变动记录日志以及修改日志关联关系。
在其中一个实施例中,“在启用记录操作日志的前提下,前置操作日志自动产生;”这部分日志包含以下内容:
访问地址,http访问方式,调用类及调用方法,浏览器到后台的请求参数,用户ip地址,用户id,用户登录名,应用标识,模块名称,操作名称和操作时间。
在其中一个实施例中,“在启用记录操作日志的前提下,后置操作日志自动产生;”这部分日志包含以下内容:
当前操作的标识txid,返回消息,返回结果编码和操作完成时间。
在其中一个实施例中,“前置操作日志经由日志处理消息保存成为2种日志”具体包括:
一种为请求操作日志,主要包含以下内容:访问地址,http访问方式,调用类及调用方法,浏览器到后台的请求参数,用户ip地址,用户id,用户登录名,应用标识,模块名称,操作名称和操作时间;
另外一种为操作日志关联关系日志:
主要包含:用户ip地址,用户id,用户登录名,应用标识,模块名称,操作名称和操作时间。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一项所述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一项所述方法的步骤。
一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行任一项所述的方法。
本发明的有益效果:
采用上述方法记录操作日志,能大量减少开发成本,开发人员仅需要少量的代码就可以完成,且日志风格统一,从而避免开发人员人为的疏忽、需求的变更或者表字段的变更导致日志不能满足后期的查询排错。且支持较为复杂的日志展示。
附图说明
图1是本发明基于微服务的操作日志记录收集方法的流程图、
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
图1是一种基于微服务的操作日志记录收集方法的流程图。该方法包括:
s10:用户操作。
用户通过浏览器访问软件,在已经登录的前提下,点击某个模块下的某个操作:比如用户点击调拨出库单下的新增按钮。
为了实现操作日志的记录,在代码中需要启用操作日志记录。然后由系统产生该次操作的唯一标识txid。
s20:前置操作日志标识
在启用记录操作日志的前提下,前置操作日志自动产生。
这部分日志包含以下内容:
访问地址,http访问方式,调用类及调用方法,浏览器到后台的请求参数,用户ip地址,用户id,用户登录名,应用标识,模块名称,操作名称,操作时间等。
s30:业务处理
开发人员需在操作对应的表中记录当前操作的标识txid,一次操作涉及到的所有表都需要记录该值。
s40:后置操作日志
在启用记录操作日志的前提下,后置操作日志自动产生。
这部分日志包含以下内容:
当前操作的标识txid,返回消息,返回结果编码,操作完成时间。
s50:数据变动日志
这部分主要使用mysqlbinlog技术,mysql的binlog日志作用是用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录(对数据库的改动),对数据库的查询select或show等不会被binlog日志记录;主要用于数据库的主从复制以及增量恢复。通过监听mysqlbinlog获取变动的数据。目前可采用canal、maxwell实现mysqlbinlog。且要将mysqlbinlog配置成row行模式。
s60:消息中间件
前置操作日志、后置操作日志、数据变动日志都会进入消息中间件(kafka)
apachekafka发源于linkedin,于2011年成为apache的孵化项目,随后于2012年成为apache的主要项目之一。kafka使用scala和java进行编写。apachekafka是一个快速、可扩展的、高吞吐、可容错的分布式发布订阅消息系统。kafka具有高吞吐量、内置分区、支持数据副本和容错的特性,适合在大规模消息处理场景中使用。
s70:日志处理中心
日志处理中心使用storm作为流式实时计算框架,主要负责消费消息中间件中的日志消息。
storm是一个分布式的、容错的开源实时计算系统,storm为分布式实时计算提供了一组通用原语,实时处理消息并更新数据库。
前置操作日志经由日志处理消息保存成为2种日志:
一种为请求操作日志,主要包含以下内容:访问地址,http访问方式,调用类及调用方法,浏览器到后台的请求参数,用户ip地址,用户id,用户登录名,应用标识,模块名称,操作名称,操作时间等。
另外一种为操作日志关联关系日志:
主要包含:用户ip地址,用户id,用户登录名,应用标识,模块名称,操作名称,操作时间
后置操作日志在本操作中直接处理。
数据变动日志经由日志处理中心保存成为数据变动记录日志以及修改日志关联关系。
s80:
日志数据库采用mongodb,主要用来保存日志记录。
s70日志处理中心可使用flink替代。日志数据库可更具实际的情况改为hbase等。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。