日志记录方法、装置以及电子设备与流程

文档序号:16665705发布日期:2019-01-18 23:15阅读:168来源:国知局
日志记录方法、装置以及电子设备与流程

本发明涉及it管理开发技术领域,尤其是涉及一种日志记录方法、装置以及电子设备。



背景技术:

随着信息系统的普及,系统复杂度的提高,软件系统在使用过程中,由于用户误操作出现问题的概率不断增加,而系统产生的日志信息是更好地了解系统运行状况及错误详情并排查系统故障的重要手段。

目前大多数系统的日志信息记录是在业务逻辑代码当中完成的,在业务逻辑当中完成日志操作对业务代码具有侵入性,并且无法灵活和动态的完成日志的记录工作。



技术实现要素:

有鉴于此,本发明的目的在于提供一种日志记录方法、装置以及电子设备,以解决现有技术中存在的日志管理效率较低的问题。

第一方面,本发明实施例提供了一种日志记录方法,方法包括:设置注解信息,其中,注解信息用于表示待操作业务对象的标签;添加注解信息至待操作业务对象的变量信息中,得到待操作业务信息;基于待操作业务信息通过面向切面编程aop方法得到待操作业务对象的方法名称和实现类型;根据方法名称和实现类型通过反射机制方法对待操作业务对象的业务信息进行反射,得到日志记录信息。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,添加注解信息至待操作业务对象的变量信息中,得到待操作业务信息,包括:添加注解信息至待操作业务对象的类变量和成员变量中,得到待操作业务信息。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,基于待操作业务信息通过面向切面编程aop方法得到待操作业务对象的方法名称和实现类型,包括:基于待操作业务信息,通过aop方法对待操作业务对象进行切入,得到待操作业务对象切入点;对切入点进行操作,进而提取切入点的切面编程信息;根据切面编程信息得到待操作业务对象的方法名称和实现类型。

结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种种可能的实施方式,其中,对切入点进行操作的方式包括:前置通知、后置通知、异常通知、最终通知以及环绕通知中的至少之一。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,根据方法名称和实现类型通过反射机制方法对待操作业务对象的业务信息进行反射,得到日志记录信息,包括:根据方法名称和实现类型通过反射机制方法对待操作业务对象的业务信息进行反射,得到待操作业务对象的内容信息以及值信息;将内容信息和值信息进行拼接,得到日志记录信息。

结合第一方面的第四种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,根据方法名称和实现类型通过反射机制方法对待操作业务对象的业务信息进行反射,得到日志记录信息之后,还包括:将日志记录信息储存至数据库。

第二方面,本发明实施例还提供一种日志记录装置,装置包括:信息注解模块,用于设置注解信息,其中,注解信息用于表示待操作业务对象的标签;信息添加模块,用于添加注解信息至待操作业务对象的变量信息中,得到待操作业务信息;方法名称和实现类型获取模块,用于基于待操作业务信息通过面向切面编程aop方法得到待操作业务对象的方法名称和实现类型;日志记录模块,用于根据方法名称和实现类型通过反射机制方法对待操作业务对象的业务信息进行反射,得到日志记录信息。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,方法名称和实现类型获取模块还用于:基于待操作业务信息,通过aop方法对待操作业务对象进行切入,得到待操作业务对象切入点;对切入点进行操作,进而提取切入点的切面编程信息;根据切面编程信息得到待操作业务对象的方法名称和实现类型。

第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述如第一方面所述的方法的步骤。

第四方面,本发明实施例还提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行如第一方面所述的方法。

本发明实施例提供的技术方案带来了以下有益效果:

本发明提供了一种日志记录方法、装置以及电子设备,该方法包括:首先设置注解信息,其中,注解信息用于表示待操作业务对象的标签,然后添加注解信息至所述待操作业务对象的变量信息中,得到待操作业务信息,之后基于待操作业务信息通过面向切面编程aop方法得到待操作业务对象的方法名称和实现类型,最后根据方法名称和实现类型通过反射机制方法对待操作业务对象的业务信息进行反射,从而得到日志记录信息,通过添加注解信息到待操作业务对象的标签得到业务信息,然后通过aop提取待操作业务的方法名称和实现类型,降低系统的耦合度,最后通过反射机制方法记录日志信息,提高了日志记录的灵活性、扩展性和通用性,解决了现有技术中存在的日志管理效率较低的问题。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种日志记录方法的流程图;

图2为本发明实施例提供的另一种日志记录方法的流程图;

图3为本发明实施例提供的一种aop方法的数据流向图;

图4为本发明实施例提供的一种日志记录的数据流向图;

图5为本发明实施例提供的一种日志记录装置的结构示意图;

图6为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,现有的日志记录方法,无法对日志操作进行集中管理,导致公共日志代码泛滥,系统的集成和解耦能力差,现有技术存在的缺点:

1.无法集中配置管理日志业务逻辑,导致大量重复日志记录代码侵入到业务代码当中,耦合度高;

2.无法动态配置日志内容修改日志内容;

3.扩展不便,无法迅速改动;

4.日志业务代码的工作量繁重且重复,浪费工作人员大量时间;

5.代码层级不明确,日志记录模块易污染其他业务模块,导致代码维护困难。

造成以上缺点的原因的根本于原因在于对无法对日志操作进行集中管理,且对日志操作没有配置方法,造成了公共日志代码泛滥,且不利于系统的集成和解耦。

基于此,本发明实施例提供的一种日志记录方法、装置以及电子设备,可以解决现有技术中存在的现有技术中存在的日志管理效率较低的问题。

为便于对本实施例进行理解,首先对本发明实施例所公开的一种日志记录方法、装置以及电子设备进行详细介绍。

实施例一:

本发明实施例提供的一种日志记录方法如图1所示,该方法包括:

步骤s102,设置注解信息,其中,注解信息用于表示待操作业务对象的标签。

具体而言,注解是一种代码级别的说明,可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。主要作用如下:

1.编写文档:通过代码里标识的注解生成文档;

2.代码分析:通过代码里标识的注解对代码进行分析;

3.编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查。

在实际应用中,注解信息可根据用户的需求进行自定义设置,注解信息的形式灵活多变,如:注解为汉语的形式、注解为英语的形式、注解为俄语的形式等。

此外,业务对象是对数据进行检索和处理的组件,通常位于中间层或者业务逻辑层。上述的业务对象为业务实体对象,业务实体可提供对业务数据及相关功能的状态编程访问。上述的待操作业务对象为可提供对日志业务数据及相关功能的状态编程访问的业务对象。

步骤s104,添加注解信息至待操作业务对象的变量信息中,得到待操作业务信息。

其中,变量信息包括业务对象的类变量和成员变量信息;上述的类变量在java中,也叫静态变量是类中独立于方法之外的变量,用static(static表示“全局的”、“静态的”,用来修饰成员变量和成员方法或静态代码块)修饰。

此外,成员变量是指定维度的成员变量,用于标识某个维度成员,在类体的变量部分中定义的变量。

步骤s106,基于待操作业务信息通过面向切面编程aop方法得到待操作业务对象的方法名称和实现类型。

进一步,上述的面向切面编程(aspectorientedprogramming,简称aop)通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。利用aop可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

步骤s108,根据方法名称和实现类型通过反射机制方法对待操作业务对象的业务信息进行反射,得到日志记录信息。

其中,上述反射机制方法是指java反射机制,是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java反射机制。

本发明提供了一种日志记录方法,该方法包括:设置注解信息;添加注解信息至所述待操作业务对象的变量信息中,得到待操作业务信息;基于待操作业务信息通过面向切面编程aop方法得到待操作业务对象的方法名称和实现类型;根据方法名称和实现类型通过反射机制方法对待操作业务对象的业务信息进行反射,得到日志记录信息。该方式通过设置注解信息、aop方法和反射机制方法记录日志信息,提高了日志记录的灵活性、扩展性和通用性。

实施例二:

本发明实施例提供的另一种日志记录方法如图2所示,该方法包括:

步骤s202,设置注解信息,其中,注解信息用于表示待操作业务对象的标签。

步骤s204,添加注解信息至待操作业务对象的类变量和成员变量中,得到待操作业务信息。

步骤s206,基于待操作业务信息,通过aop方法对待操作业务对象进行切入,得到待操作业务对象切入点。

其中,切入点(pointcut)是连接点位置的集合,是指明触发通知(advice)的条件。上述连接点(jointpoint)指的是程序运行的某个阶段点,如某个方法的调用、异常抛出等。

步骤s208,对切入点进行操作,进而提取切入点的切面编程信息。

对切入点进行操作的方式包括:前置通知、后置通知、异常通知、最终通知以及环绕通知中的至少之一。

上述的前置通知(beforeadvice)是指在方法执行之前执行的通知;上述的后置通知(afterreturnmingadvice)是指在方法执行后执行的通知;上述异常通知(afterthrowingadvice)是指在方法抛出异常后执行的通知;上述最终通知(after(finally)advice)是指在最后方法中执行的通知;上述环绕通知(aroundadvice)是指围绕方法执行的通知。

步骤s210,根据切面编程信息得到待操作业务对象的方法名称和实现类型。

图3为本发明实施例提供的一种aop方法的数据流向图;通过aop切面(aspect)进入待操作业务系统模块,配置当中切点(pointcut)通过切面(aspect)某个连接点(joinpoint)完成对应的切点操作(切点操作可以分为:beforeadvice,afterreturningadvice,afterthrowingadvice,after(finally)advice,aroundadvice)。进入到对应的连接点(joinpoint)以后,根据连接点(joinpoint)获得待操作的对应业务的方法名和对应的业务实现类,进行日志的记录(logging)工作。

步骤s212,根据方法名称和实现类型通过反射机制方法对待操作业务对象的业务信息进行反射,得到待操作业务对象的内容信息以及值信息。

步骤s214,将内容信息和值信息进行拼接,得到日志记录信息。

根据方法名称和实现类型通过反射机制方法对待操作业务对象的业务信息进行反射,得到日志记录信息之后,还包括:将日志记录信息储存至数据库。将日志记录信息保存至数据库便于查看对应业务的操作信息,便于代码操作出现问题时,查找事故根源。

图4为本发明实施例提供的一种日志记录的数据流向图;实现技术采用注解和aop技术以及反射技术实现日志的动态记录工作,具体实现流程如下:

首先创建完成java自定义的注解,注解信息用于表示待操作业务对象的标签,然后添加注解信息至待操作业务对象的类变量和成员变量中,通过aop得到待操作业务对象的方法名称和实现类型,最后通过java反射机制动态获得业务对象的成员变量的内容信息及值信息,将获得的业务对象内容信息和值信息进行组合装拼接,获得符合格式的日志信息,然后将其保存至数据库。

该技术以aop为技术核心,技术实现方式采用jdk动态代理(动态字节码增强技术),通过aop可以将系统公共的相关业务提取出来独立实现然后通过切面切入进系统,从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑。通过aop技术作为一个承上启下的技术核心,整套技术方案将自定义注解动态和可扩展性和java反射机制的动态灵活性结合在一起,保证整套技术通用性,扩展性,灵活性。上述采用jdk动态代理避免了开发人员编写各个繁锁的静态代理类,只需简单地指定一组接口及目标类对象就能动态的获得代理对象。

该方式通过设置注解信息、aop方法和反射机制方法记录日志信息,提高了日志记录的灵活性、扩展性和通用性。

实施例三:

本发明实施例提供的一种日志记录装置如图5所示,该装置包括:信息注解模块50、信息添加模块51、方法名称和实现类型获取模块52以及日志记录模块53。

其中,信息注解模块50,用于设置注解信息,其中,注解信息用于表示待操作业务对象的标签。信息添加模块51,用于添加注解信息至待操作业务对象的变量信息中,得到待操作业务信息。方法名称和实现类型获取模块52,用于基于待操作业务信息通过面向切面编程aop方法得到待操作业务对象的方法名称和实现类型。

方法名称和实现类型获取模块52还用于基于待操作业务信息,通过aop方法对待操作业务对象进行切入,得到待操作业务对象切入点;对切入点进行操作,进而提取切入点的切面编程信息;根据切面编程信息得到待操作业务对象的方法名称和实现类型。

日志记录模块53,用于根据方法名称和实现类型通过反射机制方法对待操作业务对象的业务信息进行反射,得到日志记录信息。

该装置通过设置注解信息、aop方法和反射机制方法记录日志信息,提高了日志记录的灵活性、扩展性和通用性。

实施例四:

本发明实施例提供的一种电子设备如图6所示,电子设备6包括存储器61、处理器62,所述存储器61中存储有可在所述处理器62上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例一或实施例二提供的方法的步骤。

参见图6,电子设备还包括:总线63和通信接口64,处理器62、通信接口64和存储器61通过总线63连接;处理器62用于执行存储器61中存储的可执行模块,例如计算机程序。

其中,存储器61可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口64(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。

总线63可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器61用于存储程序,所述处理器62在接收到执行指令后,执行所述程序,前述本发明任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器62中,或者由处理器62实现。

处理器62可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器62中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器62可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现成可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器61,处理器62读取存储器61中的信息,结合其硬件完成上述方法的步骤。

实施例五:

本发明实施例还提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行如实施例一或实施例二所述的方法。

本发明实施例提供的具有处理器可执行的非易失的程序代码的计算机可读介质,与上述实施例提供的日志记录方法、日志记录装置具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

本发明实施例所提供的进行日志记录方法、装置以及电子设备的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。该发明具有以下优点:

1.集中配置管理日志业务逻辑,不需要在业务代码当中重复日志记录逻辑。

2.动态配置日志内容,方便日志内容修改。

3.扩展方便,通过自定义注解能够有效生成各种日志信息,改动迅速方便。

4.通过自定义注解和类结构反射特性的使用大大简化了日志业务代码的工作量。

5.代码层级明确,日志记录模块不会污染其他业务模块,将以公共代码模块进行维护。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1