日志记录的方法及装置与流程

文档序号:28802299发布日期:2022-02-09 00:16阅读:154来源:国知局
日志记录的方法及装置与流程

1.本技术实施例涉及数据处理领域,尤其涉及一种日志记录的方法及装置。


背景技术:

2.thrift是包含序列化功能和支持服务通信的远程过程调用框架,该框架为客户机和服务器(client/server structs,c/s)结构。
3.在一些场景下,应用thrift框架时,日志记录是在调用端的每个调用远程服务的入口,和服务端的每个服务接口上添加对应的日志打印逻辑,记录调用远程服务接口对应的请求参数和远程服务接口返回的结果数据。在服务端的每个服务接口添加日志打印逻辑,记录调用端请求的参数和服务端返回的结果数据。如此,当调用远程服务的入口,在调用端的每个调用远程服务的入口添加日志打印逻辑操作繁琐,日志记录的效率低,在修改日志打印逻辑时,也需要对每个调用远程服务的入口的日志打印逻辑和每个服务接口的日志打印逻辑逐一进行修改,管理效率低,无法集中、高效的记录和管理日志。


技术实现要素:

4.本技术实施例的目的是提供一种日志记录的方法及装置,以解决日志记录的操作繁琐和日志的记录效率和管理效率低的问题,。
5.为了解决上述技术问题,本技术实施例是这样实现的:
6.第一方面,本技术实施例提供了一种日志记录的方法,方法包括:
7.响应于调用请求,利用第一工具类通过用于调用多个远程服务接口的统一入口和服务端的servlet容器,调用远程服务接口;针对于统一入口,利用第一工具类获取调用请求中的请求参数对象;针对于远程服务接口,利用第一工具类获取服务端返回的对应于调用请求的结果数据对象;针对于统一入口,利用第一工具类调用第二工具类,通过第二工具类对请求参数对象和结果数据对象按照预定的统一日志处理逻辑进行日志记录;第一工具类为基于java反射中的动态代理创建的动态代理类,第二工具类为基于java反射中的动态代理创建的记录日志工具类。
8.第二方面,本技术实施例提供了一种日志记录的装置,装置包括:
9.响应于多个远程服务的统一入口的调用请求,基于创建的servelt容器,获取servlet请求对象实例和servlet响应对象实例;通过servlet请求对象实例和servlet响应对象实例调用记录日志工具类;利用记录日志工具类,从servlet请求对象实例中获取请求参数对象,从servlet响应对象实例中获取结果数据对象;对请求参数对象和结果数据对象,利用记录日志工具类按照对应于多个远程服务接口预定的统一日志处理逻辑进行日志记录。
10.第三方面,本技术实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线;其中,处理器、通信接口以及存储器通过总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序,实现如第一方面或第二方面的日
志记录的方法步骤。
11.第四方面,本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现如第一方面或第二方面的日志记录的方法步骤。
12.第五方面,本技术实施例提供了一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行程序或指令,实现如第一方面或第二方面的日志记录的方法。
13.本技术实施例提供的技术方案,包括:响应于调用请求,利用第一工具类通过用于调用多个远程服务接口的统一入口和服务端的servlet容器,调用远程服务接口;针对于统一入口,利用第一工具类获取调用请求中的请求参数对象;针对于远程服务接口,利用第一工具类获取服务端返回的对应于调用请求的结果数据对象;针对统一入口,利用第一工具类调用第二工具类,通过第二工具类对请求参数对象和结果数据对象按照预定的统一日志处理逻辑进行日志记录;第一工具类为基于java反射中的动态代理创建的动态代理类,第二工具类为基于java反射中的动态代理创建的记录日志工具类。
14.因此,调用多个远程服务接口的入口为统一入口,可以利用第一工具类通过该统一入口和服务端的servlet容器调用远程服务接口,且能获取统一入口处的请求参数对象和结果数据对象,在统一入口处,再由第二工具类对请求参数对象和结果数据对象按照预定的统一日志处理逻辑进行日志记录,操作简单,集中、高效的记录和管理日志。
附图说明
15.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
16.图1为本技术实施例提供的一种日志记录的整体架构图;
17.图2为本技术实施例提供的一种日志记录的方法的第一种流程示意图;
18.图3为本技术实施例提供的一种日志记录的方法的第二种流程示意图;
19.图4为本技术实施例提供的一种日志记录的方法的第三种流程示意图;
20.图5为本技术实施例提供的一种日志记录的装置的第一种模块组成示意图;
21.图6为本技术实施例提供的一种日志记录的装置的第二种模块组成示意图;
22.图7为本技术实施例提供的电子设备的结构示意图。
具体实施方式
23.本技术实施例提供了一种日志记录的方法及装置,日志记录的操作简单,提高了日志的记录效率和管理效率低。
24.为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护
的范围。
25.在一些场景下,应用thrift框架时,日志记录是在调用端的每个调用远程服务的入口,和服务端的每个服务接口上添加对应的日志打印逻辑,记录调用远程服务接口对应的请求参数和远程服务接口返回的结果数据。在服务端的每个服务接口添加日志打印逻辑,记录调用端请求的参数和服务端返回的结果数据。
26.如此,当调用远程服务的入口和服务端的服务接口过多时,在调用端的每个调用远程服务的入口添加日志打印逻辑,以及在服务端的每个服务接口添加日志打印逻辑,操作繁琐。当需要对日志打印逻辑进行修改时,需要逐一的对每个调用远程服务的入口的日志打印逻辑和每个服务接口的日志打印逻辑进行修改,无法集中、高效的记录和管理日志。
27.为了解决以上技术问题,本技术实施例提供了一种日志记录的方法及装置,下面结合相关附图对本技术实施例提供的技术方案进行说明。
28.如图1所示,为本技术实施例提供的一种日志记录的整体架构图,本技术实施例提供的日志记录整体架构图,在调用端采用java反射动态代理,在服务端对servlet容器进行重写实现thrift框架中调用端和服务端集中、高效的进行日志记录和日志管理。
29.对于调用端,具体如下。
30.在一种可能的实现方式中,本技术实施例采用java反射动态代理将thrift框架中调用服务端的远程服务接口的入口统一起来,并统一加上预定的统一日志处理逻辑。对于调用端采用java反射动态代理创建两个类thriftlogproxy.java(第一工具类)和loggerutility.java(第二工具类),loggerutility.java为创建的记录日志工具类,实现日志的记录,thriftlogproxy.java为动态代理的实现类,用于在重写的invoke函数中调用loggerutility.java。
31.在调用服务端的远程服务接口时,通过动态代理类中的“(iqthvehicleservice.iface)new thriftlogproxy().getproxy(client)”(目标工具函数)创建client代理类的实例,基于创建的client代理类的实例调用远程服务接口。具体可以采用:iqthvehicleservice.ifaceclientproxy=(iqthvehicleservice.iface)new thriftlogproxy().getproxy(client)表示。
32.其中,“iqthvehicleservice.ifaceclientproxy”表示创建的client代理类的实例。list《qtvehicle》resultlist=clientproxy.queryjyvehicle(jyvehiclerequest),“list《qtvehicle》resultlist”表示调用的远程服务接口的结果,“clientproxy.queryjyvehicle(jyvehiclerequest)”表示调用的远程服务接口的接口名。
33.例如,如图1所示,在调用端,采用(iqthvehicleservice.iface)new thriftlogproxy().getproxy(client)创建了3个client代理类的实例(客户端代理类的实例),分别为客户端代理类的实例一“clientproxya(parame 1)”、客户端代理类的实例二“clientproxyb(parame 2)”、客户端代理类的实例三“clientproxyc(parame 3)”。
34.3个client代理类的实例通过统一的入口,通过服务端的servlet容器请求调用远程服务接口,分别为远程服务接口一“iqthvehicleservice-》a”、远程服务接口二“iqthvehicleservice-》b”和远程服务接口三“iqthvehicleservice-》c”。在client代理类的实例中请求调用远程服务接口时,其请求参数对象包括但不限于调用远程服务接口的接口名称、请求的服务类型等。在统一入口处,thriftlogproxy.java获取调用端的3个client
代理类的实例请求的请求参数对象,以及服务端返回的响应于该请求参数对象的结果数据对象,将请求参数对象的结果数据对象传给loggerutility.java的日志处理函数,由日志处理函数对请求参数对象的结果数据对象进行解析后按照定义好的日志格式写入到日志文件或者数据库。
35.对于服务端,具体如下。
36.调用端通过servelt容器调用远程服务接口时,可以对servelt容器的类进行重写。在service函数中对servletrequest(servlet请求对象实例)和servletresponse(servlet响应对象实例)进行备份,从而解决servletrequest(servlet请求对象实例)和servletresponse(servlet响应对象实例)中的流数据无法重复读取的问题,备份之后可以从servlet请求对象实例和servlet响应对象实例的数据流中读取请求参数对象和结果数据对象。
37.对servletrequest(servlet请求对象实例)和servletresponse(servlet响应对象实例)进行备份具体如下:
38.在目标文件夹(如util包)中新建两个类,wrappedhttpservletrequest(第一备份类)和wrappedhttpservletresponse(第二备份类),利用wrappedhttpservletrequest对servletrequest进行备份,利用wrappedhttpservletresponse对servletresponse进行备份。
39.进一步,针对servelt容器,可以新建thriftbaseservlet作为所有servelt容器的父类,在该父类中定义了两个属性,分别为facadename和processor。其中,facadename属性为远程服务接口的接口名,processor为与该接口名对应的处理器实例。
40.在服务端对应于多个远程服务接口新建loggerutility.java的记录日志工具类,在该记录日志工具类中定义了thriftservletlog函数,该函数作为日志处理函数用来解析请求参数对象和结果数据对象以及用来记录日志。
41.当调用端发起调用请求后,创建的servelt容器统一继承thriftbaseservlet父类,并在新建的servelt容器的构造函数service函数中调用父类的两个属性进行初始化。根据该父类中定义的facadename确定远程服务接口的接口名,再根据接口名获取对应的servlet请求对象实例和servlet响应对象实例。然后在重写的service函数中将备份的servlet请求对象实例和servlet响应对象实例作为参数调用记录日志工具类中的thriftservletlog函数,thriftservletlog函数从servlet请求对象实例和servlet响应对象实例的流数据中获取请求参数对象和结果数据对象,并按照预定的统一日志格式写入到日志文件。
42.值得注意的是,调用端的日志打印逻辑和服务端的日志打印逻辑可以是相同的,也可以是不同的,本技术实施例在此并不作限定。
43.通过本技术实施例公开的技术方案,在调用端调用远程服务接口的入口为统一入口,在统一入口处添加统一的日志处理逻辑,在服务端的多个服务接口采用servelt容器统一日志处理逻辑。因此,无需再每个调用远程服务接口的入口和服务接口分别逐一添加日志处理逻辑,操作简单,记录日志的效率较高。此外,在管理(如修改)日志处理逻辑时,只需要对调用端统一入口处的日志处理逻辑和多个服务接口对应的统一日志处理逻辑进行管理,管理简单,提高了日志管理效率。此外,在调用端和服务端,调用端的日志记录和服务端
的日志记录可以单独进行,即通过调用端的统一入口的第一工具类和第二工具类实现调用端的日志记录,通过服务端的servelt容器和日志记录工具类实现服务端的日志记录,提高了日志记录的灵活性。
44.如图2所示,本技术实施例提供一种日志记录的方法,该方法的执行主体可以为终端,该日志记录的方法具体可以包括以下步骤s201-s203:
45.在s201中:响应于调用请求,利用第一工具类通过用于调用多个远程服务接口的统一入口和服务端的servlet容器,调用远程服务接口。
46.具体来讲,调用请求是终端(调用端)发起的调用远程服务接口的请求,第一工具类为基于java反射中的动态代理创建的动态代理类,如上述的thriftlogproxy.java,用来统一调用端的多个远程服务接口的入口,也就是说,调用多个远程服务接口的入口为同一个。调用端通过该入口和服务端的servlet容器调用远程服务接口。
47.在一种可能的实现方式中,s201包括:通过第一工具类中的目标工具函数创建client代理类的实例;基于创建的client代理类的实例,通过用于调用多个远程服务接口的统一入口和服务端的servlet容器,调用远程服务接口。
48.具体来讲,第一工具类中的目标工具函数可以为(iqthvehicleservice.iface)new thriftlogproxy().getproxy(client),利用该目标工具函数创建client代理类的实例,利用该client代理类的实例通过上述的统一入口和服务端的servlet容器,调用远程服务接口。
49.在s202中,针对于统一入口,利用第一工具类获取调用请求中的请求参数对象;针对于远程服务接口,利用第一工具类获取服务端返回的对应于调用请求的结果数据对象。
50.具体来讲,调用请求中的请求参数对象包括但不限于远程服务接口的接口名称、请求服务的类型等。结果数据对象包括但不限于服务器针对请求服务的类型提供的服务数据、服务器处理调用请求的耗时(服务器接收调用请求的时间至发送结果数据对象至调用端的时长)。
51.在s203中,针对于统一入口,利用第一工具类调用第二工具类,通过第二工具类对请求参数对象和结果数据对象按照预定的统一日志处理逻辑进行日志记录。
52.具体来讲,第一工具类为基于java反射中的动态代理创建的动态代理类,第二工具类为基于java反射中的动态代理创建的记录日志工具类。
53.在一种可能的实现方式中,利用第一工具类调用第二工具类包括:利用第一工具类在重写的invoke函数中调用第二工具类。
54.具体来讲,java中可以通过invoke的方式来调用第二工具类,第二工具类按照预定的统一日志处理逻辑进行日志记录。
55.在一种可能的实现方式中,日志处理逻辑包括解析请求参数对象和结果数据对象和记录解析后的请求参数对象和结果数据对象至日志文件。则通过第二工具类对请求参数对象和结果数据对象按照预定的统一日志处理逻辑进行日志记录包括:利用第二工具类,对请求参数对象和结果数据对象解析为统一的格式;将解析为统一格式的请求参数对象和结果数据对象按照预定义的日志格式记录至日志文件。
56.具体来讲,对于请求参数对象和结果数据对象而言,其数据的格式可能存在不统一的情况,为了便于日志记录,可以将请求数据对象和结果数据对象解析为统一的格式,预
定义的日志格式可以由用户根据实际情况自定义设置,如记录的日志中包含的数据类型、日志中的换行格式等。
57.在一种可能的事项方式中,还可以对该日志处理逻辑进行管理,如修改,删除、增加等管理操作。
58.通过本技术实施例公开的技术方案,调用多个远程服务接口的入口为统一入口,可以利用第一工具类通过该统一入口和服务端的servlet容器调用远程服务接口,且能获取统一入口处的请求参数对象和结果数据对象,在统一入口处,再由第二工具类对请求参数对象和结果数据对象按照预定的统一日志处理逻辑进行日志记录,在管理(如修改)日志处理逻辑时,只需对统一入口处的日志处理逻辑进行修改等管理操作,操作简单,能够集中、高效的记录和管理日志。
59.如图3所示,本技术实施例提供一种日志记录的方法,该方法的执行主体可以为服务器,其中,该服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群。该日志记录的方法具体可以包括以下步骤s301-s304:
60.在s301中,响应于多个远程服务的统一入口的调用请求,基于创建的servelt容器,获取servlet请求对象实例和servlet响应对象实例。
61.在一种可能的实现方式中,s301包括:确定创建的servelt容器的父类中定义的接口信息;基于接口信息获取servlet请求对象实例和servlet响应对象实例。
62.具体来讲,servlet请求对象实例和servlet响应对象实例为service函数中自带的对象实例,本技术实施例可以通过servlet请求对象实例和servlet响应对象实例的数据流中对应读取请求参数对象和调用参数对象。创建的servelt容器的父类可以为thriftbaseservlet,在thriftbaseservlet中定义了两个属性,分别为facadename和processor,其中,facadename为调用的远程服务接口的接口名,processor为与该接口名对应的处理器的实例。根据该facadename的接口名获取servlet请求对象实例和servlet响应对象实例,并由processor进行处理。
63.在s302中,通过servlet请求对象实例和servlet响应对象实例调用记录日志工具类。
64.在一种可能的实现方式中,s302包括:在重写的service函数中将备份的servlet请求对象实例和备份的servlet响应对象实例作为参数调用记录日志工具类。
65.具体来讲,为了避免servlet请求对象实例和备份的servlet响应对象实例中的数据无法重复读取的情况,可以预先创建与servlet请求对象实例对应的第一备份类,和与servlet响应对象实例对应的第二备份类;利用第一备份类对servlet请求对象实例进行备份,利用第二备份类对servlet响应对象实例进行备份。
66.其中,第一备份类和第二备份类可以是在util包中新建的类,如第一备份类可以为wrappedhttpservletrequest,第二备份类可以为wrappedhttpservletresponse。wrappedhttpservletrequest对servlet请求对象实例进行备份,wrappedhttpservletresponse对servlet响应对象实例进行备份。
67.在s303中,利用记录日志工具类,从servlet请求对象实例中获取请求参数对象,从servlet响应对象实例中获取结果数据对象。
68.在一种可能的实现方式中,s303包括:利用记录日志工具类中定义的日志处理函
数,从servlet请求对象实例中获取请求参数对象,从servlet响应对象实例中获取结果数据对象。
69.具体来讲,记录日志工具类可以为loggerutility类,loggerutility类中定义的日志处理函数可以为thriftservletlog函数。在通过上述的servelt容器的父类中定义的接口信息获取到servlet请求对象实例和servlet响应对象实例后,在重写的service函数中以servlet请求对象实例和servlet响应对象实例作为参数调用thriftservletlog函数,由thriftservletlog函数从servlet请求对象实例中获取请求参数对象,从servlet响应对象实例中获取结果数据对象。
70.进一步,在通过上述的servelt容器的父类中定义的接口信息获取到servlet请求对象实例和servlet响应对象实例后,在重写的service函数中以备份的servlet请求对象实例和备份的servlet响应对象实例作为参数调用thriftservletlog函数,由thriftservletlog函数从备份的servlet请求对象实例中获取请求参数对象,从备份的servlet响应对象实例中获取结果数据对象。从而避免servlet请求对象实例和servlet响应对象实例中的数据无法重复读取的问题。
71.在s304中,对请求参数对象和结果数据对象,利用记录日志工具类按照对应于多个远程服务接口预定的统一日志处理逻辑进行日志记录。
72.在一种可能的实现方式中,s304包括:对请求参数对象和结果数据对象,利用日志工具类按照预定义的日志格式写入到日志文件。
73.具体的,预定义的日志格式可以由用户根据实际情况定义,本技术实施例在此并不作限定,此外,上述各实施例的相同部分可以互相参照,本技术实施例在此不再赘述。
74.在一种可能的事项方式中,还可以对该日志处理逻辑进行管理,如修改,删除、增加等管理操作。
75.通过本技术实施例公开的技术方案,在多个远程服务接口,可以基于创建的servelt容器,获取servlet请求对象实例和servlet响应对象实例,然后通过servlet请求对象实例和servlet响应对象实例调用记录日志工具类,利用日志工具类从servlet请求对象实例和servlet响应对象实例中获取请求参数对象和结果数据对象,并由记录日志工具类按照预定的统一日志处理逻辑进行日志记录。无需在各远程服务接口逐一添加日志打印逻辑,此外,在管理(如修改)日志打印逻辑时,仅对该日志打印逻辑进行管理,操作简单,提高了日志的记录效率和管理效率。
76.如图4所示,本技术实施例提供一种日志记录的方法,该方法的执行主体可以为服务器,其中,该服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群。该日志记录的方法具体可以包括以下步骤s400-s404:
77.在s400中,确定预先创建的与servlet请求对象实例对应的第一备份类,和与servlet响应对象实例对应的第二备份类;利用第一备份类对servlet请求对象实例进行备份,利用第二备份类对servlet响应对象实例进行备份。
78.具体来讲,第一备份类和第二备份类可以是在util包中新建的类,如第一备份类可以为wrappedhttpservletrequest,第二备份类可以为wrappedhttpservletresponse。wrappedhttpservletrequest对servlet请求对象实例进行备份,wrappedhttpservletresponse对servlet响应对象实例进行备份。
79.在s401中,响应于多个远程服务的统一入口的调用请求,基于创建的servelt容器,获取servlet请求对象实例和servlet响应对象实例。
80.在s402中,通过servlet请求对象实例和servlet响应对象实例调用记录日志工具类。
81.在s403中,利用记录日志工具类,从servlet请求对象实例中获取请求参数对象,从servlet响应对象实例中获取结果数据对象。
82.在s404中,对请求参数对象和结果数据对象,利用记录日志工具类按照对应于多个远程服务接口预定的统一日志处理逻辑进行日志记录。
83.在一种可能的实现方式中,还可以对该日志处理逻辑进行管理,如修改,删除、增加等管理操作。
84.值得注意的是,本技术实施例中的s401至s404与上述的s301至s304具有相同或类似的实现方式,其可以互相参照,本技术实施例在此不再赘述。
85.通过本技术实施例提供的技术方案,在多个远程服务接口,可以基于创建的servelt容器,获取servlet请求对象实例和servlet响应对象实例,然后通过servlet请求对象实例和servlet响应对象实例调用记录日志工具类,利用日志工具类从servlet请求对象实例和servlet响应对象实例中获取请求参数对象和结果数据对象,并由记录日志工具类按照预定的统一日志处理逻辑进行日志记录。无需在各远程服务接口逐一添加日志打印逻辑,此外,在管理(如修改)日志打印逻辑时,仅对该日志打印逻辑进行管理,操作简单,提高了日志的记录效率和管理效率。
86.此外,对servlet请求对象实例和servlet响应对象实例进行备份,避免了servlet请求对象实例和servlet响应对象实例中的数据无法重复读取的情况发生,进一步提高日志记录的效率。
87.对应上述实施例提供的日志记录的方法,基于相同的技术构思,本技术实施例还提供了日志记录的装置,图5为本技术实施例提供的日志记录的装置的模块组成示意图,该日志记录的装置用于执行图2描述的日志记录的方法,如图5所示,该日志记录的装置包括:调用模块501,获取模块502,记录模块503。
88.调用模块501,用于响应于调用请求,利用第一工具类通过用于调用多个远程服务接口的统一入口和服务端的servlet容器,调用远程服务接口;获取模块502,用于针对于统一入口,利用第一工具类获取调用请求中的请求参数对象;针对于远程服务接口,利用第一工具类获取服务端返回的对应于调用请求的结果数据对象;记录模块503,用于针对于统一入口,利用第一工具类调用第二工具类,通过第二工具类对请求参数对象和结果数据对象按照预定的统一日志处理逻辑进行日志记录;第一工具类为基于java反射中的动态代理创建的动态代理类,第二工具类为基于java反射中的动态代理创建的记录日志工具类。
89.通过本技术实施例提供的技术方案,调用多个远程服务接口的入口为统一入口,可以利用第一工具类通过该统一入口和服务端的servlet容器调用远程服务接口,且能获取统一入口处的请求参数对象和结果数据对象,在统一入口处,再由第二工具类对请求参数对象和结果数据对象按照预定的统一日志处理逻辑进行日志记录,操作简单,集中、高效的记录和管理日志。
90.在一种可能的实现方式中,调用模块501,还用于通过第一工具类中的目标工具函
数创建client代理类的实例;基于创建的client代理类的实例,通过用于调用多个远程服务接口的统一入口和服务端的servlet容器,调用远程服务接口。
91.在一种可能的实现方式中,记录模块503,还用于利用第一工具类在重写的invoke函数中调用第二工具类。
92.在一种可能的实现方式中,记录模块503,还用于利用第二工具类,对请求参数对象和结果数据对象解析为统一的格式;将解析为统一格式的请求参数对象和结果数据对象按照预定义的日志格式记录至日志文件。
93.对应上述实施例提供的日志记录的方法,基于相同的技术构思,本技术实施例还提供了日志记录的装置,图6为本技术实施例提供的日志记录的装置的模块组成示意图,该日志记录的装置用于执行图3和图4描述的日志记录的方法,如图6所示,该日志记录的装置包括:第一获取模块601,调用模块602,第二获取模块603和记录模块604。
94.第一获取模块601,用于响应于多个远程服务的统一入口的调用请求,基于创建的servelt容器,获取servlet请求对象实例和servlet响应对象实例;调用模块602,用于通过servlet请求对象实例和servlet响应对象实例调用记录日志工具类;第二获取模块603,用于利用记录日志工具类,从servlet请求对象实例中获取请求参数对象,从servlet响应对象实例中获取结果数据对象;记录模块604,用于对请求参数对象和结果数据对象,利用记录日志工具类按照对应于多个远程服务接口预定的统一日志处理逻辑进行日志记录。
95.通过本技术实施例提供的技术方案,在多个远程服务接口,可以基于创建的servelt容器,获取servlet请求对象实例和servlet响应对象实例,然后通过servlet请求对象实例和servlet响应对象实例调用记录日志工具类,利用日志工具类从servlet请求对象实例和servlet响应对象实例中获取请求参数对象和结果数据对象,并由记录日志工具类按照预定的统一日志处理逻辑进行日志记录。无需在各远程服务接口逐一添加日志打印逻辑,此外,在管理(如修改)日志打印逻辑时,仅对该日志打印逻辑进行管理,操作简单,提高了日志的记录效率和管理效率。
96.在一种可能的实现方式中,还包括:
97.确定模块,用于确定预先创建的与servlet请求对象实例对应的第一备份类,和与servlet响应对象实例对应的第二备份类;备份模块,用于利用第一备份类对servlet请求对象实例进行备份,利用第二备份类对servlet响应对象实例进行备份。
98.在一种可能的实现方式中,第一获取模块601,还用于确定创建的servelt容器的父类中定义的接口信息;基于接口信息获取servlet请求对象实例和servlet响应对象实例。
99.在一种可能的实现方式中,调用模块602,还用于在重写的service函数中将备份的servlet请求对象实例和备份的servlet响应对象实例作为参数调用记录日志工具类。
100.在一种可能的实现方式中,第二获取模块603,还用于利用记录日志工具类中定义的日志处理函数,从servlet请求对象实例中获取请求参数对象,从servlet响应对象实例中获取结果数据对象。
101.在一种可能的实现方式中,记录模块604,还用于对请求参数对象和结果数据对象,利用日志工具类按照预定义的日志格式写入到日志文件。
102.本技术实施例提供的日志记录的装置能够实现上述日志记录的方法对应的实施
例中的各个过程,为避免重复,这里不再赘述。
103.需要说明的是,本技术实施例提供的日志记录的装置与本技术实施例提供的日志记录的方法基于同一发明构思,因此该实施例的具体实施可以参见前述日志记录的方法的实施,重复之处不再赘述。
104.对应上述实施例提供的日志记录的方法,基于相同的技术构思,本技术实施例还提供了一种电子设备,该电子设备用于执行上述的日志记录的方法,图7为实现本发明各个实施例的一种电子设备的结构示意图,如图7所示。电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器701和存储器702,存储器702中可以存储有一个或一个以上存储应用程序或数据。其中,存储器702可以是短暂存储或持久存储。存储在存储器702的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对电子设备中的一系列计算机可执行指令。更进一步地,处理器701可以设置为与存储器702通信,在电子设备上执行存储器702中的一系列计算机可执行指令。电子设备还可以包括一个或一个以上电源703,一个或一个以上有线或无线网络接口704,一个或一个以上输入输出接口705,一个或一个以上键盘706。
105.在本实施例中,电子设备包括有处理器、通信接口、存储器和通信总线;其中,处理器、通信接口以及存储器通过总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序,实现以下方法步骤:
106.响应于调用请求,利用第一工具类通过用于调用多个远程服务接口的统一入口和服务端的servlet容器,调用远程服务接口;针对于统一入口,利用第一工具类获取调用请求中的请求参数对象;针对于远程服务接口,利用第一工具类获取服务端返回的对应于调用请求的结果数据对象;针对于统一入口,利用第一工具类调用第二工具类,通过第二工具类对请求参数对象和结果数据对象按照预定的统一日志处理逻辑进行日志记录;第一工具类为基于java反射中的动态代理创建的动态代理类,第二工具类为基于java反射中的动态代理创建的记录日志工具类。
107.或者响应于多个远程服务的统一入口的调用请求,基于创建的servelt容器,获取servlet请求对象实例和servlet响应对象实例;通过servlet请求对象实例和servlet响应对象实例调用记录日志工具类;利用记录日志工具类,从servlet请求对象实例中获取请求参数对象,从servlet响应对象实例中获取结果数据对象;对请求参数对象和结果数据对象,利用记录日志工具类按照对应于多个远程服务接口预定的统一日志处理逻辑进行日志记录。
108.具体实施例中,本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现如以下步骤:
109.响应于调用请求,利用第一工具类通过用于调用多个远程服务接口的统一入口和服务端的servlet容器,调用远程服务接口;针对于统一入口,利用第一工具类获取调用请求中的请求参数对象;针对于远程服务接口,利用第一工具类获取服务端返回的对应于调用请求的结果数据对象;针对于统一入口,利用第一工具类调用第二工具类,通过第二工具类对请求参数对象和结果数据对象按照预定的统一日志处理逻辑进行日志记录;第一工具类为基于java反射中的动态代理创建的动态代理类,第二工具类为基于java反射中的动态代理创建的记录日志工具类。
110.或者响应于多个远程服务的统一入口的调用请求,基于创建的servelt容器,获取servlet请求对象实例和servlet响应对象实例;通过servlet请求对象实例和servlet响应对象实例调用记录日志工具类;利用记录日志工具类,从servlet请求对象实例中获取请求参数对象,从servlet响应对象实例中获取结果数据对象;对请求参数对象和结果数据对象,利用记录日志工具类按照对应于多个远程服务接口预定的统一日志处理逻辑进行日志记录。
111.具体实施例中,本技术实施例提供了一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行程序或指令,实现如以下步骤:
112.响应于调用请求,利用第一工具类通过用于调用多个远程服务接口的统一入口和服务端的servlet容器,调用远程服务接口;针对于统一入口,利用第一工具类获取调用请求中的请求参数对象;针对于远程服务接口,利用第一工具类获取服务端返回的对应于调用请求的结果数据对象;针对于统一入口,利用第一工具类调用第二工具类,通过第二工具类对请求参数对象和结果数据对象按照预定的统一日志处理逻辑进行日志记录;第一工具类为基于java反射中的动态代理创建的动态代理类,第二工具类为基于java反射中的动态代理创建的记录日志工具类。
113.或者响应于多个远程服务的统一入口的调用请求,基于创建的servelt容器,获取servlet请求对象实例和servlet响应对象实例;通过servlet请求对象实例和servlet响应对象实例调用记录日志工具类;利用记录日志工具类,从servlet请求对象实例中获取请求参数对象,从servlet响应对象实例中获取结果数据对象;对请求参数对象和结果数据对象,利用记录日志工具类按照对应于多个远程服务接口预定的统一日志处理逻辑进行日志记录。
114.本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
115.本发明是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
116.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
117.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
118.在一个典型的配置中,电子设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
119.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。
120.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
121.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
122.本领域技术人员应明白,本技术的实施例可提供为方法、装置或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
123.以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1