日志记录方法、装置、计算机设备及计算机可读存储介质与流程
未命名
07-20
阅读:104
评论:0
1.本技术涉及互联网技术领域,特别是涉及一种日志记录方法、装置、计算机设备及计算机可读存储介质。
背景技术:
2.日志记录是后端程序服务不可或缺的一部分,如果没有日志的记录归档,那么系统将处于无法感知到各方面参数的黑盒状态,所以业界推出了各种开源框架,可以帮助记录日志,并输出日志归档。而使用日志功能,就可以通过记录埋点,掌握用户的行为动作和数据变化,以及在监控到系统出现异常情况时,快速分析解决问题。
3.目前,业界推出的开源框仅提供了记录埋点和输出归档的功能,在面对分布式微服务系统时,就需要开发人员自行在此基础上扩展。实际上,每个开发人员均会在其对应管理的微服务中开发日志记录的功能,而为每个微服务都重新开发一套定制的日志封装会造成很多不必要的资源成本消耗,而且很难做到输出结构统一,风格统一,规范统一。因此,如何规范微服务日志记录格式成为行业内亟需解决的问题。
技术实现要素:
4.有鉴于此,本技术提供了一种日志记录方法、装置、计算机设备及计算机可读存储介质,主要目的在于解决目前如何规范微服务日志记录格式的问题。
5.依据本技术第一方面,提供了一种日志记录方法,该方法包括:
6.基于切面编程技术,构建捕获接口参数的第一功能代码,所述接口参数包括异常参数、请求参数和返回参数;
7.构建第二功能代码,将所述第一功能代码和所述第二功能代码封装至日志记录工具,所述第二功能代码将所述接口参数按照功能划分为多个功能域;
8.响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录。
9.可选地,所述基于切面编程技术,构建捕获接口参数的第一功能代码,包括:
10.设置过滤接口,基于所述过滤接口对接口数据进行检测;
11.在系统或业务运行异常时,捕获所述异常参数,以及按照第一预设格式对所述异常参数进行封装;
12.在检测到目标请求方法时,依据第一函数捕获所述请求参数,依据第二函数捕获返回参数,以及按照第二预设格式对所述请求参数和所述返回参数进行封装。
13.可选地,所述基于切面编程技术,构建捕获接口参数的第一功能代码之前,所述方法还包括:
14.构建第三功能代码,将所述第三功能代码封装至所述日志记录工具;
15.其中,所述第三功能代码用于进行微服务交互,基于注解应用技术,继承熔断器机制的目标插件以及声明式客户端的拦截接口进行日志埋点,生成微服务之间的调用链路,
所述目标插件用于包装熔断器线程执行的方法。
16.可选地,所述第二功能代码,包括:
17.获取所述第一功能代码输出的接口数据,基于日志内容和微服务规范,将日志格式划分为所述多个功能域,其中,所述功能域包括系统域、用户域和目标域,所述目标域用于映射诊断上下文。
18.可选地,所述构建第二功能代码之后,所述方法还包括:
19.构建第四功能代码,将所述第四功能代码封装至所述日志记录工具;
20.其中,所述第四功能代码添加多个链路追踪参数,通过所述多个链路追踪参数,设置将收集到的行为数据写入日志记录中,以及设置在接口返回数据前输出所述日志记录。
21.可选地,所述构建第四功能代码之后,所述方法还包括:
22.构建第五功能代码,将所述第五功能代码封装至所述日志记录工具;
23.其中,所述第五功能代码用于进行日志归档,基于日志框架,设置日志滚动切分规则以及写入方式,其中,所述写入方式包括异步写入和同步写入。
24.可选地,所述响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录,包括:
25.响应于所述微服务创建指令,获取所述日志记录工具,将所述日志记录工具引入所述微服务;
26.采用所述日志记录工具对系统数据或业务数据进行打点日志记录,得到目标日志,以及将所述目标日志发送至展示终端,以使开发人员基于所述目标日志对所述微服务进行管理。
27.依据本技术第二方面,提供了一种日志记录装置,该装置包括:
28.第一构建模块,用于基于切面编程技术,构建捕获接口参数的第一功能代码,所述接口参数包括异常参数、请求参数和返回参数;
29.第二构建模块,用于构建第二功能代码,将所述第一功能代码和所述第二功能代码封装至日志记录工具,所述第二功能代码将所述接口参数按照功能划分为多个功能域;
30.获取模块,用于响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录。
31.可选地,所述第一构建模块,用于设置过滤接口,基于所述过滤接口对接口数据进行检测;在系统或业务运行异常时,捕获所述异常参数,以及按照第一预设格式对所述异常参数进行封装;在检测到目标请求方法时,依据第一函数捕获所述请求参数,依据第二函数捕获返回参数,以及按照第二预设格式对所述请求参数和所述返回参数进行封装。
32.可选地,所述装置还包括:
33.第三构建模块,用于构建第三功能代码,将所述功能代码封装至所述日志记录工具;其中,所述第三功能代码用于进行微服务交互,基于注解应用技术,继承熔断器机制的目标插件以及声明式客户端的拦截接口进行日志埋点,生成微服务之间的调用链路,所述目标插件用于包装熔断器线程执行的方法。
34.可选地,所述第二构建模块,用于获取所述第一功能代码输出的接口数据,基于日志内容和微服务规范,将日志格式划分为所述多个功能域,其中,所述功能域包括系统域、用户域和目标域,所述目标域用于映射诊断上下文。
35.可选地,所述装置还包括:
36.第四构建模块,用于构建第四功能代码,将所述第四功能代码封装至所述日志记录工具;其中,所述第四功能代码添加多个链路追踪参数,通过所述多个链路追踪参数,设置将收集到的行为数据写入日志记录中,以及设置在接口返回数据前输出所述日志记录。
37.可选地,所述装置还包括:
38.第五构建模块,用于构建第五功能代码,将所述第五功能代码封装至所述日志记录工具;其中,所述第五功能代码用于进行日志归档,基于日志框架,设置日志滚动切分规则以及写入方式,其中,所述写入方式包括异步写入和同步写入。
39.可选地,所述获取模块,用于响应于所述微服务创建指令,获取所述日志记录工具,将所述日志记录工具引入所述微服务;采用所述日志记录工具对系统数据或业务数据进行打点日志记录,得到目标日志,以及将所述目标日志发送至展示终端,以使开发人员基于所述目标日志对所述微服务进行管理。
40.依据本技术第三方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述方法的步骤。
41.依据本技术第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。
42.借由上述技术方案,本技术提供的一种日志记录方法、装置、计算机设备及计算机可读存储介质,本技术首先基于切面编程技术,构建捕获接口参数的第一功能代码。依据第一功能代码可以捕获包括异常参数、请求参数和返回参数在内的接口参数。随后,构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,其中,第二功能代码可以将第一功能代码记录的接口参数按照功能划分为多个功能域。最后,响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。通过统一封装日志格式化的输出,有效降低了开发成本、运维成本。在分布式微服务环境下,微服务会随着业务的发展,变得越来越多,当每创建一个微服务时,只需引入封装好的日志记录工具,无需再进行定制化开发,使得微服务开发人员无需关注日志输出。通过规范日志的输出格式,能够非常清晰、快速的分析问题,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。
43.上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
44.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
45.图1示出了本技术实施例提供的一种日志记录方法流程示意图;
46.图2示出了本技术实施例提供的一种日志记录方法流程示意图;
47.图3示出了本技术实施例提供的一种日志记录装置的结构示意图;
48.图4示出了本技术实施例提供的一种计算机设备的装置结构示意图。
具体实施方式
49.下面将参照附图更详细地描述本技术的示例性实施例。虽然附图中显示了本技术的示例性实施例,然而应当理解,可以以各种形式实现本技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本技术,并且能够将本技术的范围完整的传达给本领域的技术人员。
50.日志记录是后端程序服务不可或缺的一部分,如果没有日志的记录归档,那么系统将处于无法感知到各方面参数的黑盒状态,所以业界推出了各种开源框架,可以帮助记录日志,并输出日志归档。而使用日志功能,就可以通过记录埋点,掌握用户的行为动作和数据变化,以及在监控到系统出现异常情况时,快速分析解决问题。目前,业界推出的开源框仅提供了记录埋点和输出归档的功能,在面对分布式微服务系统时,就需要开发人员自行在此基础上扩展。实际上,每个开发人员均会在其对应管理的微服务中开发日志记录的功能,而为每个微服务都重新开发一套定制的日志封装会造成很多不必要的资源成本消耗,而且很难做到输出结构统一,风格统一,规范统一。因此,为了解决规范微服务日志记录格式的问题,本技术提供了一种日志记录方法,首先基于切面编程技术,构建捕获接口参数的第一功能代码。依据第一功能代码可以捕获包括异常参数、请求参数和返回参数在内的接口参数。随后,构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,其中,第二功能代码可以将第一功能代码记录的接口参数按照功能划分为多个功能域。最后,响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。通过统一封装日志格式化的输出,有效降低了开发成本、运维成本。在分布式微服务环境下,微服务会随着业务的发展,变得越来越多,当每创建一个微服务时,只需引入封装好的日志记录工具,无需再进行定制化开发,使得微服务开发人员无需关注日志输出。通过规范日志的输出格式,能够非常清晰、快速的分析问题,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。
51.本技术实施例提供了一种日志记录方法,如图1所示,该方法包括:
52.101、基于切面编程技术,构建捕获接口参数的第一功能代码,接口参数包括异常参数、请求参数和返回参数。
53.在本技术实施例中,首先开发人员基于切面编程技术spring aop的特性构建捕获接口参数的第一功能代码,第一功能代码可以用于捕获包括异常参数、请求参数和返回参数在内的接口参数。需要说明的是,aop为aspect oriented programming的缩写,意为面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。aop是spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用aop可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。其中,spring框架是一个开放源代码的j2ee应用程序框架,是针对bean的生命周期进行管理的轻量级容器。
54.102、构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,第二功能代码将接口参数按照功能划分为多个功能域。
55.在本技术实施例中,需要依据slf4j(simple logging facade for java,java的
简单日志外观)、json(javascript object notation,轻量级数据交换格式)、logging规范,构建第二功能代码,以使第二功能代码可以将接口参数按照功能划分为多个功能域。其中,slf4j能够提供一个一致的api来使用不同的日志框架,比如:java.util.logging,logback,log4j等。slf4j使用户可以在运行时嵌入想要使用的日志框架。进一步地,由于相关技术人员均会在各自管理的微服务中开发日志记录这个功能,但项目周期和启动时间各不相同,为每个微服务都重新开发一套定制的日志封装,会造成很多不必要的资源成本消耗,费时费力。另一方面,微服务之间是高度解耦,但却衔接紧密的关系,所以在此前提下,很难做到输出结构统一,风格统一,规范统一的日志记录。因此,本技术将构建的第一功能代码和第二功能代码封装至日志记录工具,用户仅需引入日志记录工具即可使用日志记录工具进行日志记录。
56.103、响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。
57.在本技术实施例中,用户在使用该日志记录工具时,如同使用开源框架一样,用同样的方式引入、申明对象及输出日志即可,无需重复编码,有效释放了该功能的开发人力。
58.本技术实施例提供的方法,首先基于切面编程技术,构建捕获接口参数的第一功能代码。依据第一功能代码可以捕获包括异常参数、请求参数和返回参数在内的接口参数。随后,构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,其中,第二功能代码可以将第一功能代码记录的接口参数按照功能划分为多个功能域。最后,响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。通过统一封装日志格式化的输出,有效降低了开发成本、运维成本。在分布式微服务环境下,微服务会随着业务的发展,变得越来越多,当每创建一个微服务时,只需引入封装好的日志记录工具,无需再进行定制化开发,使得微服务开发人员无需关注日志输出。通过规范日志的输出格式,能够非常清晰、快速的分析问题,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。
59.本技术实施例提供了一种日志记录方法,如图2所示,该方法包括:
60.201、构建第三功能代码,将第三功能代码封装至日志记录工具。
61.在本技术实施例中,日志记录工具的依赖包中还封装有第三功能代码,构建的第三功能代码用于进行微服务交互,基于注解应用feignclient,继承熔断器机制的目标插件以及声明式客户端的拦截接口进行日志埋点,生成微服务之间的调用链路,所述目标插件用于包装熔断器线程执行的方法。
62.具体地,通过继承熔断器机制,即hystrix的hystrixconcurrencystrategy目标插件用以包装hystrix线程执行的方法。再集成声明式客户端feign的拦截接口,即requestinterceptor接口用以拦截参数,实现feign的埋点,从而做到微服务之间存在完整的调用链路。进而将构建完成的第三功能代码封装至日志记录工具中,以便后续直接调用日志记录工具实现该第三功能模块提供的功能。需要说明的是hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,hystrix熔断器机制能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。当某个服务单元发生故障之后,通过故障监控向调用方返回一个符合预期的、可处理的备选响应,而不是长时间的等待或者抛出
调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。
63.202、基于切面编程技术,构建捕获接口参数的第一功能代码,以及构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具。
64.在本技术实施例中,首先开发人员基于切面编程技术spring aop的特性构建捕获接口参数的第一功能代码,以使第一功能代码能够捕获包括异常参数、请求参数和返回参数在内的接口参数,以及依据slf4j(simple logging facade for java,java的简单日志外观)、json(javascript object notation,轻量级数据交换格式)、logging规范,构建第二功能代码,以使第二功能代码可以将接口参数按照功能划分为多个功能域。
65.对于第一功能代码的构建,首先基于切面编程技术spring aop的特性,增加actionaspect环绕切面以及继承httpservletrequestwrapper和实现filter过滤接口。需要说明的是,aop为aspect oriented programming的缩写,意为面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。aop是spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用aop可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。其中,spring框架是一个开放源代码的j2ee应用程序框架,是针对bean的生命周期进行管理的轻量级容器。具体地,设置实现filter过滤接口,基于filter接口对接口数据进行检测,在系统或业务运行异常时,捕获异常参数,在实际运行过程中,可以是在runtimeexception时捕获异常,以及按照第一预设格式对异常参数进行封装。在检测到目标请求方法时,如在检测到get、post、put等目标请求方法时,依据第一函数beforehandler捕获请求参数,依据第二函数afterhandler捕获返回参数,以及按照第二预设格式对请求参数和返回参数进行封装。进而将第一功能代码封装至日志记录工具中,以使后续可以通过引入日志记录工具直接使用第一功能代码捕获接口参数的功能。
66.对于构建第二功能代码,在本技术实施例中,需要依据slf4j(simple logging facade for java,java的简单日志外观)、json(javascript object notation,轻量级数据交换格式)、logging规范构建第二功能代码,以使第二功能代码可以将接口参数按照功能划分为多个功能域。其中,slf4j能够提供一个一致的api来使用不同的日志框架,比如:java.util.logging,logback,log4j等。slf4j使用户可以在运行时嵌入想要使用的日志框架。具体地,获取第一功能代码输出的接口数据,基于日志内容和微服务规范,也就是slf4j(simple logging facade for java,java的简单日志外观)、json(javascript object notation,轻量级数据交换格式)、logging规范,将日志统一化格式,划分为多个功能域即系统域(system)、用户域(user)、目标域目标域为mdc(链路追踪)域,用于映射诊断上下文。具体划分过程参考如下报文:
[0067][0068]
进一步地,由于目前相关技术人员均会在各自管理的微服务中开发日志记录这个功能,但项目周期和启动时间各不相同,为每个微服务都重新开发一套定制的日志封装,会造成很多不必要的资源成本消耗,费时费力。另一方面,微服务之间是高度解耦,但却衔接紧密的关系,所以在此前提下,很难做到输出结构统一,风格统一,规范统一的日志记录。因此,本技术将构建的第一功能代码和第二功能代码封装至日志记录工具,用户仅需引入日志记录工具即可使用日志记录工具进行日志记录。
[0069]
203、构建第四功能代码以及第五功能代码,将第四功能代码和第五功能代码封装至日志记录工具。
[0070]
在本技术实施例中,日志记录工具的依赖包中还封装有第四功能代码和第五功能代码,构建的第四功能代码添加多个链路追踪参数,通过多个链路追踪参数,设置将收集到的行为数据写入日志记录中,以及设置在接口返回数据前输出日志记录。构建的第五功能代码用于日志归档。
[0071]
具体地,对于构建第四功能代码,增加traceid等链路追踪参数,在api返回前自动输出一条格式化后的日志,用以打点。需要说明的是,traceid等链路追踪参数,用于标识某
一次具体的请求id。当用户的请求进入系统后,会在rpc调用网络的第一层生成一个全局唯一的traceid,并且会随着每一层的rpc调用,不断往后传递,这样的话,通过traceid就可以把一次用户请求在系统中调用的路径串联起来。对于构建第五功能代码,基于logback日志框架,设置日志滚动切分规则以及写入方式,其中,写入方式包括异步写入和同步写入。需要说明的是,logback是springboot内置的日志处理框架,spring-boot-starter其中包含了spring-boot-starter-logging,该依赖内容就是spring boot默认的日志框架logback。
[0072]
204、响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。
[0073]
在本技术实施例中,用户在使用该日志记录工具时,如同使用开源框架一样,用同样的方式引入、申明对象及输出日志即可,无需重复编码,有效释放了该功能的开发人力。
[0074]
具体地,响应于微服务创建指令,获取日志记录工具,将日志记录工具引入微服务,引入过程如下:
[0075]
logger logger=loggerfactory.getlogger(this.getclass());《br/》
[0076]
*logger.trace().xxx.log();《br/》
[0077]
*logger.info().xxx.log();《br/》
[0078]
进一步地,采用日志记录工具对系统数据或业务数据进行打点日志记录,得到目标日志,以及将目标日志发送至展示终端,以使开发人员基于目标日志对微服务进行管理。在本步骤中,对于日志输出代码的对象,做了统一封装,并作为一个公共功能打包成一个sdk依赖包,也就是日志记录工具,从而无需重复编码,有效释放了该功能的开发人力。
[0079]
本技术实施例提供的方法,首先基于切面编程技术,构建捕获接口参数的第一功能代码。依据第一功能代码可以捕获包括异常参数、请求参数和返回参数在内的接口参数。随后,构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,其中,第二功能代码可以将第一功能代码记录的接口参数按照功能划分为多个功能域。最后,响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。通过统一封装日志格式化的输出,有效降低了开发成本、运维成本。在分布式微服务环境下,微服务会随着业务的发展,变得越来越多,当每创建一个微服务时,只需引入封装好的日志记录工具,无需再进行定制化开发,使得微服务开发人员无需关注日志输出。通过规范日志的输出格式,能够非常清晰、快速的分析问题,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。
[0080]
进一步地,作为图1所述方法的具体实现,本技术实施例提供了一种日志记录装置,如图3所示,所述装置包括:第一构建模块301、第二构建模块302、获取模块303。
[0081]
该第一构建模块301,用于基于切面编程技术,构建捕获接口参数的第一功能代码,所述接口参数包括异常参数、请求参数和返回参数;
[0082]
该第二构建模块302,用于构建第二功能代码,将所述第一功能代码和所述第二功能代码封装至日志记录工具,所述第二功能代码将所述接口参数按照功能划分为多个功能域;
[0083]
该获取模块303,用于响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录。
[0084]
在具体的应用场景中,所述第一构建模块,用于设置过滤接口,基于所述过滤接口
对接口数据进行检测;在系统或业务运行异常时,捕获所述异常参数,以及按照第一预设格式对所述异常参数进行封装;在检测到目标请求方法时,依据第一函数捕获所述请求参数,依据第二函数捕获返回参数,以及按照第二预设格式对所述请求参数和所述返回参数进行封装。
[0085]
在具体的应用场景中,所述装置还包括:第三构建模块304。
[0086]
该第三构建模块304,用于构建第三功能代码,将所述功能代码封装至所述日志记录工具;其中,所述第三功能代码用于进行微服务交互,基于注解应用技术,继承熔断器机制的目标插件以及声明式客户端的拦截接口进行日志埋点,生成微服务之间的调用链路,所述目标插件用于包装熔断器线程执行的方法。
[0087]
在具体的应用场景中,该第二构建模块302,用于获取所述第一功能代码输出的接口数据,基于日志内容和微服务规范,将日志格式划分为所述多个功能域,其中,所述功能域包括系统域、用户域和目标域,所述目标域用于映射诊断上下文。
[0088]
在具体的应用场景中,所述装置还包括:第四构建模块305。
[0089]
该第四构建模块305,用于构建第四功能代码,将所述第四功能代码封装至所述日志记录工具;其中,所述第四功能代码添加多个链路追踪参数,通过所述多个链路追踪参数,设置将收集到的行为数据写入日志记录中,以及设置在接口返回数据前输出所述日志记录。
[0090]
在具体的应用场景中,所述装置还包括:第五构建模块306。
[0091]
该第五构建模块306,用于构建第五功能代码,将所述第五功能代码封装至所述日志记录工具;其中,所述第五功能代码用于进行日志归档,基于日志框架,设置日志滚动切分规则以及写入方式,其中,所述写入方式包括异步写入和同步写入。
[0092]
在具体的应用场景中,该获取模块303,用于响应于所述微服务创建指令,获取所述日志记录工具,将所述日志记录工具引入所述微服务;采用所述日志记录工具对系统数据或业务数据进行打点日志记录,得到目标日志,以及将所述目标日志发送至展示终端,以使开发人员基于所述目标日志对所述微服务进行管理。
[0093]
本技术实施例提供的装置,首先基于切面编程技术,构建捕获接口参数的第一功能代码。依据第一功能代码可以捕获包括异常参数、请求参数和返回参数在内的接口参数。随后,构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,其中,第二功能代码可以将第一功能代码记录的接口参数按照功能划分为多个功能域。最后,响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。通过统一封装日志格式化的输出,有效降低了开发成本、运维成本。在分布式微服务环境下,微服务会随着业务的发展,变得越来越多,当每创建一个微服务时,只需引入封装好的日志记录工具,无需再进行定制化开发,使得微服务开发人员无需关注日志输出。通过规范日志的输出格式,能够非常清晰、快速的分析问题,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。
[0094]
需要说明的是,本技术实施例提供的一种日志记录装置所涉及各功能单元的其他相应描述,可以参考图1和图2中的对应描述,在此不再赘述。
[0095]
在示例性实施例中,参见图4,还提供了一种设备,该设备包括通信总线、处理器、存储器和通信接口,还可以包括输入输出接口和显示设备,其中,各个功能单元之间可以通
过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的日志记录方法。
[0096]
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的日志记录方法的步骤。
[0097]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本技术可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施场景所述的方法。
[0098]
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本技术所必须的。
[0099]
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0100]
上述本技术序号仅仅为了描述,不代表实施场景的优劣。
[0101]
以上公开的仅为本技术的几个具体实施场景,但是,本技术并非局限于此,任何本领域的技术人员能思之的变化都应落入本技术的保护范围。
技术特征:
1.一种日志记录方法,其特征在于,包括:基于切面编程技术,构建捕获接口参数的第一功能代码,所述接口参数包括异常参数、请求参数和返回参数;构建第二功能代码,将所述第一功能代码和所述第二功能代码封装至日志记录工具,所述第二功能代码将所述接口参数按照功能划分为多个功能域;响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录。2.根据权利要求1所述的方法,其特征在于,所述基于切面编程技术,构建捕获接口参数的第一功能代码,包括:设置过滤接口,基于所述过滤接口对接口数据进行检测;在系统或业务运行异常时,捕获所述异常参数,以及按照第一预设格式对所述异常参数进行封装;在检测到目标请求方法时,依据第一函数捕获所述请求参数,依据第二函数捕获返回参数,以及按照第二预设格式对所述请求参数和所述返回参数进行封装。3.根据权利要求1所述的方法,其特征在于,所述基于切面编程技术,构建捕获接口参数的第一功能代码之前,所述方法还包括:构建第三功能代码,将所述第三功能代码封装至所述日志记录工具;其中,所述第三功能代码用于进行微服务交互,基于注解应用技术,继承熔断器机制的目标插件以及声明式客户端的拦截接口进行日志埋点,生成微服务之间的调用链路,所述目标插件用于包装熔断器线程执行的方法。4.根据权利要求1所述的方法,其特征在于,所述第二功能代码,包括:获取所述第一功能代码输出的接口数据,基于日志内容和微服务规范,将日志格式划分为所述多个功能域,其中,所述功能域包括系统域、用户域和目标域,所述目标域用于映射诊断上下文。5.根据权利要求1所述的方法,其特征在于,所述构建第二功能代码之后,所述方法还包括:构建第四功能代码,将所述第四功能代码封装至所述日志记录工具;其中,所述第四功能代码添加多个链路追踪参数,通过所述多个链路追踪参数,设置将收集到的行为数据写入日志记录中,以及设置在接口返回数据前输出所述日志记录。6.根据权利要求5所述的方法,其特征在于,所述构建第四功能代码之后,所述方法还包括:构建第五功能代码,将所述第五功能代码封装至所述日志记录工具;其中,所述第五功能代码用于进行日志归档,基于日志框架,设置日志滚动切分规则以及写入方式,其中,所述写入方式包括异步写入和同步写入。7.根据权利要求1所述的方法,其特征在于,所述响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录,包括:响应于所述微服务创建指令,获取所述日志记录工具,将所述日志记录工具引入所述微服务;采用所述日志记录工具对系统数据或业务数据进行打点日志记录,得到目标日志,以
及将所述目标日志发送至展示终端,以使开发人员基于所述目标日志对所述微服务进行管理。8.一种日志记录装置,其特征在于,包括:第一构建模块,用于基于切面编程技术,构建捕获接口参数的第一功能代码,所述接口参数包括异常参数、请求参数和返回参数;第二构建模块,用于构建第二功能代码,将所述第一功能代码和所述第二功能代码封装至日志记录工具,所述第二功能代码将所述接口参数按照功能划分为多个功能域;获取模块,用于响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录。9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
技术总结
本申请公开了一种日志记录方法、装置、计算机设备及计算机可读存储介质,涉及互联网技术领域,在分布式微服务环境下,只需引入封装好的日志记录工具,无需再进行定制化开发避免资源浪费,并且通过规范日志的输出格式,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。所述方法包括:基于切面编程技术,构建捕获接口参数的第一功能代码,接口参数包括异常参数、请求参数和返回参数;构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,第二功能代码将接口参数按照功能划分为多个功能域;响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。务进行日志记录。务进行日志记录。
技术研发人员:张汉文 徐自力
受保护的技术使用者:平安国际融资租赁有限公司
技术研发日:2023.04.19
技术公布日:2023/7/18
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种供电管理系统和供电管理方法与流程 下一篇:烘干装置和基板烘干设备的制作方法
