掌桥专利:专业的专利平台
掌桥专利
首页

非侵入式日志记录方法和系统

文献发布时间:2023-06-19 19:28:50


非侵入式日志记录方法和系统

技术领域

本申请主要涉及日志记录处理领域,尤其涉及一种非侵入式日志记录方法和系统。

背景技术

业务日志几乎存在于每个业务系统中,而这些系统一般都有各自记录日志的一套实现方式。为了使业务日志做到接入简单、易于理解,且不和业务逻辑耦合。设计优雅的记录业务日志方式,达到“让用户知道在什么时间发生了什么事”的目的是本领域一直研究的课题。

常见的日志有系统日志,主要给开发人员排查问题提供依据,一般打印在系统日志中且日志中可能包含开发代码,可读性不高。在业务人员使用系统时,需要让业务人员了解某个对象在新增或编辑前后经历过哪些步骤,比如订单的物流信息,仓库的库存变更等。开发人员在存储订单信息的同时,如果采用原始的方式记录订单的业务流程到数据库,并展示给业务人员,会增加额外开发量。

因此,本领域亟待开发一种日志记录手段,可以解决上述的技术问题。

发明内容

本申请要解决的技术问题是提供一种非侵入式日志记录方法和系统,可以简单快捷的记录业务操作,降低业务日志记录开发成本,同时不影响业务逻辑执行。

为解决上述技术问题,本申请提供了一种非侵入式日志记录方法,包括如下的步骤:在业务逻辑执行前,根据自定义注解规则分析所述业务日志,以获得日志信息;在所述业务逻辑的执行过程中,根据自定义函数和日志上下文解析所述日志信息,以获得日志解析结果;以及存储所述日志解析结果。

在本发明的一实施例中,所述自定义注解规则包括操作标题、操作类型、对应菜单信息、是否http请求、是否开启自动查询历史数据信息和/或自定义函数。

在本发明的一实施例中,在所述获得日志信息后,还包括解析查询历史记录后再执行所述业务逻辑。

在本发明的一实施例中,所述解析查询历史记录依赖于所述自定义函数执行。

在本发明的一实施例中,还包括在开始执行所述业务逻辑后,首先判断业务执行是否抛出异常,若判断结果为是则结束流程,否则继续执行解析所述日志信息的步骤。

在本发明的一实施例中,还包括在存储所述日志解析结果后,释放上下文变量。

本发明的另一方面还提出了一种非侵入式日志记录系统,包括:日志拦截模块,配置为在业务逻辑执行前,根据自定义注解规则分析所述业务日志,以获得日志信息;业务执行模块,配置为执行、处理和/或存储所述业务逻辑;日志解析模块,配置为在所述业务逻辑的执行过程中,根据自定义函数和日志上下文解析所述日志信息,以获得日志解析结果;以及日志存储模块,配置为存储所述日志解析结果。

在本发明的一实施例中,所述日志解析模块还配置为在开始执行所述业务逻辑后,首先判断业务执行是否抛出异常,若判断结果为是则结束流程,否则继续执行解析所述日志信息的步骤。

本发明的另一方面还提出了一种非侵入式日志记录系统,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现上述的非侵入式日志记录方法。

一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现上述的非侵入式日志记录方法。

与现有技术相比,本申请具有以下优点:本申请的非侵入式日志记录方法和系统,可以减少开发周期时间节省开发成本费,使开发人员像记录系统一样,通过简单的方式,达到业务操作的记录。本发明可以将Java Aop作为基础技术,并结合容器、消息队列等微服务技术来进行构建。由于大多数的情况下,相关业务系统的开发人员并不是一位,为了避免开发风格迥异,本发明统一了开发人员记录操作日志的标准,减少开发代码量。同时,由于设计了通过自定义函数和上下文参数解析记录日志,增加了对丰富日志内容的可扩展性,通过框架springboot提供的自动装配,达到整体拦截功能的开关,日志拦截记录且与业务逻辑解耦的灵活性和通用性更强。

附图说明

包括附图是为提供对本申请进一步的理解,它们被收录并构成本申请的一部分,附图示出了本申请的实施例,并与本说明书一起起到解释本申请原理的作用。附图中:

图1是本发明一实施例的一种非侵入式日志记录方法的流程示意图;

图2是本发明另外一实施例的一种非侵入式日志记录方法的流程示意图;

图3是本发明一实施例的一种非侵入式日志记录系统的系统框图;

图4是如图3所示实施例中非侵入式日志记录系统的逻辑原理示意图;以及

图5是本发明另外一实施例的一种非侵入式日志记录系统的系统框图。

具体实施方式

为了更清楚地说明本申请的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。

如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。

除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本申请的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

在本申请的描述中,需要理解的是,方位词如“前、后、上、下、左、右”、“横向、竖向、垂直、水平”和“顶、底”等所指示的方位或位置关系通常是基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,在未作相反说明的情况下,这些方位词并不指示和暗示所指的装置或元件必须具有特定的方位或者以特定的方位构造和操作,因此不能理解为对本申请保护范围的限制;方位词“内、外”是指相对于各部件本身的轮廓的内外。

为了便于描述,在这里可以使用空间相对术语,如“在……之上”、“在……上方”、“在……上表面”、“上面的”等,用来描述如在图中所示的一个器件或特征与其他器件或特征的空间位置关系。应当理解的是,空间相对术语旨在包含除了器件在图中所描述的方位之外的在使用或操作中的不同方位。例如,如果附图中的器件被倒置,则描述为“在其他器件或构造上方”或“在其他器件或构造之上”的器件之后将被定位为“在其他器件或构造下方”或“在其他器件或构造之下”。因而,示例性术语“在……上方”可以包括“在……上方”和“在……下方”两种方位。该器件也可以其他不同方式定位(旋转90度或处于其他方位),并且对这里所使用的空间相对描述作出相应解释。

此外,需要说明的是,使用“第一”、“第二”等词语来限定零部件,仅仅是为了便于对相应零部件进行区别,如没有另行声明,上述词语并没有特殊含义,因此不能理解为对本申请保护范围的限制。此外,尽管本申请中所使用的术语是从公知公用的术语中选择的,但是本申请说明书中所提及的一些术语可能是申请人按他或她的判断来选择的,其详细含义在本文的描述的相关部分中说明。此外,要求不仅仅通过所使用的实际术语,而是还要通过每个术语所蕴含的意义来理解本申请。

应当理解,当一个部件被称为“在另一个部件上”、“连接到另一个部件”、“耦合于另一个部件”或“接触另一个部件”时,它可以直接在该另一个部件之上、连接于或耦合于、或接触该另一个部件,或者可以存在插入部件。相比之下,当一个部件被称为“直接在另一个部件上”、“直接连接于”、“直接耦合于”或“直接接触”另一个部件时,不存在插入部件。同样的,当第一个部件被称为“电接触”或“电耦合于”第二个部件,在该第一部件和该第二部件之间存在允许电流流动的电路径。该电路径可以包括电容器、耦合的电感器和/或允许电流流动的其它部件,甚至在导电部件之间没有直接接触。

本申请的一实施例参照图1提出了一种非侵入式日志记录方法10(以下简称“日志记录方法10”),可以简单快捷的记录业务操作,降低业务日志记录开发成本,同时不影响业务逻辑执行。

本申请中包括图1在内的多附图使用了流程图用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,或将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。

根据图1,日志记录方法10具体包括如下的步骤。

步骤11为在业务逻辑执行前,根据自定义注解规则分析业务日志,以获得日志信息。示例性的,在本发明的不同实施例中,自定义注解规则包括操作标题、操作类型、对应菜单信息、是否http请求、是否开启自动查询历史数据信息和/或自定义函数。

示例性的,本申请的根据自定义注解规则分析业务日志的操作步骤可以理解为是在业务逻辑执行之外对于业务日志记录操作进行拦截,示例性的,可以通过AOP拦截器实现。示例性的,可以针对于自定义注解@operateRecord分析出需要记录的业务日志,然后在后续步骤中将之持久化。具体定义示例如表格1所示。

表格1:自定义注解规则

由上述注解包含内容大致可知,通过步骤11获得的日志信息可以理解为“当前数据行在某地(菜单)做了(操作类型)某事(操作标题)”。

步骤12为在业务逻辑的执行过程中,根据自定义函数和日志上下文解析日志信息,以获得日志解析结果。通过这样的方式,可以增加对丰富日志内容的可扩展性,示例性的例如通过框架springboot提供的自动装配来达到整体拦截功能的开关,日志拦截记录且与业务逻辑解耦的灵活性和通用性相较于现有技术中的日志记录处理手段会更强。

步骤13为存储日志解析结果。示例性的,通过实现接口的方式,把日志存储设置成异步或同步,可以和业务放在一个事务中保证操作日志和业务的一致性,也可以新开辟一个事务,保证日志的错误不影响业务的事务,本发明不对此做出限制。

以上图1示出了日志记录方法10的流程示意图,该日志记录方法仅仅是本发明的日志记录方案一种较为基本的实现方式。在本发明的一些优选实施例中,对于日志记录方案的步骤细节还有进一步的优化。下面根据图2示出的示例进行说明。图2示出了基于日志记录方法10的一种更为优选的实现方式。

根据图2,在开始流程后,首先在业务执行前解析注解信息,这同时也是如图1所示的步骤11。在本实施例中,在获得日志信息后,首先解析查询历史记录后,之后再执行业务逻辑。示例性的,解析查询历史记录可以依赖于如图1所示的步骤12中的自定义函数执行。进一步优选地,在本实施例中,还包括在开始执行业务逻辑后,首先判断业务执行是否抛出异常,若判断结果为是则结束流程,否则继续执行解析日志信息(解析上下文)的步骤。在完成解析后,执行记录日志的步骤,等同于如图1所示的步骤13。最后,在本实施例中,还包括在存储日志解析结果后,释放上下文变量。

可以看到,在如图2所示的实施例中,日志的记录持久化是在业务方法执行之后执行的。当方法抛出异常后跳过本次业务日志记录,不会影响后续的业务操作。同时,在业务方法之前,会提前解析函数表达式,解决了如何获取需要查询修改之前的内容的问题。

另外,在本实施例中,操作前历史记录查询,依赖于自定义注解@operateRecord内中的executeExpression自定义函数来执行。具体通过Spring EL来实现,SpEL在Spring产品中是作为表达式求值的核心基础模块,是一种强大的表达式语言,支持在运行时查询和操作对象图。它本身是可以脱离Spring独立使用的。下面举例说明解析操作:

另外,在本发明包括图1和图2的一些实施例中,还涉及日志上下文的概念,一些提前在SpEL记录解析需要用到的变量或在未开启提前查询时需要存储的记录信息通过上下文RecordContext的方式,在业务方法与拦截器之间传输。

上下文RecordContext的定义实例如下表格2所示。

表格2:RecordContext的定义实例

本发明的另一方面参照图3还提出了一种非侵入式日志记录系统30(以下简称“日志记录系统30”)。日志记录系统30具体包括日志拦截模块31、业务执行模块32、日志解析模块33以及日志存储模块34。具体的,日志拦截模块31配置为在业务逻辑执行前,根据自定义注解规则分析业务日志,以获得日志信息。业务执行模块32配置为执行、处理和/或存储业务逻辑。日志解析模块33配置为在业务逻辑的执行过程中,根据自定义函数和日志上下文解析日志信息,以获得日志解析结果。日志存储模块34配置为存储日志解析结果。优选地,在本发明的一些实施例中,日志解析模块33还配置为在开始执行业务逻辑后,首先判断业务执行是否抛出异常,若判断结果为是则结束流程,否则继续执行解析日志信息的步骤。

更具体的,图4示出了如图3所示的日志记录系统30的逻辑原理示意图。根据图4可以看出的,在业务逻辑执行的总流程中,首先通过日志拦截模块31进行日志拦截,在根据自定义注解规则获得日志信息后,再通过业务执行模块32进行业务处理和业务存储,并同时可以通过日志解析模块33根据自定义函数和日志上下文解析日志信息,最终将日志解析结果存储在相应位置,供不同流程的业务人员调用。通过这样的方式,可以简单快捷的记录业务操作,降低业务日志记录开发成本,同时不影响业务逻辑执行。

本申请的一实施例还提出了一种如图5所示的非侵入式日志记录系统50。根据图5,非侵入式日志记录系统50可包括内部通信总线51、处理器(Processor)52、只读存储器(ROM)53、随机存取存储器(RAM)54、以及通信端口55。当应用在个人计算机上时,非侵入式日志记录系统50还可以包括硬盘56。

内部通信总线51可以实现非侵入式日志记录系统50组件间的数据通信。处理器52可以进行判断和发出提示。在一些实施例中,处理器52可以由一个或多个处理器组成。通信端口55可以实现非侵入式日志记录系统50与外部的数据通信。在一些实施例中,非侵入式日志记录系统50可以通过通信端口55从网络发送和接受信息以及数据。

非侵入式日志记录系统50还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘56,只读存储器(ROM)53和随机存取存储器(RAM)54,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器52所执行的可能的程序指令。处理器执行这些指令以实现方法的主要部分。处理器处理的结果通过通信端口传给用户设备,在用户界面上显示。

除此之外,本申请另一方面还提出了一种存储有计算机程序代码的计算机可读介质,计算机程序代码在由处理器执行时实现上述的非侵入式日志记录方法。

上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述申请披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。

同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。

本申请的一些方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。处理器可以是一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理器件(DAPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器或者其组合。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,压缩盘CD、数字多功能盘DVD……)、智能卡以及闪存设备(例如,卡、棒、键驱动器……)。

计算机可读介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、射频信号、或类似介质、或任何上述介质的组合。

同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或多个申请实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。

一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本申请一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。

虽然本申请已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本申请,在没有脱离本申请精神的情况下还可作出各种等效的变化或替换,因此,只要在本申请的实质精神范围内对上述实施例的变化、变型都将落在本申请的权利要求书的范围内。

相关技术
  • 一种非侵入式监测系统下电器的识别方法
  • 用于非侵入式地确定至少一个血压值的方法、用于非侵入式地确定血压的测量设备和系统
  • 用于非侵入式地确定至少一个血压值的方法、用于非侵入式地确定血压的测量设备和系统
技术分类

06120115921659