CN116431443A - 日志记录方法、装置、计算机设备及计算机可读存储介质 - Google Patents

日志记录方法、装置、计算机设备及计算机可读存储介质 Download PDF

Info

Publication number
CN116431443A
CN116431443A CN202310423777.8A CN202310423777A CN116431443A CN 116431443 A CN116431443 A CN 116431443A CN 202310423777 A CN202310423777 A CN 202310423777A CN 116431443 A CN116431443 A CN 116431443A
Authority
CN
China
Prior art keywords
function code
log
micro
service
parameters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310423777.8A
Other languages
English (en)
Inventor
张汉文
徐自力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An International Financial Leasing Co Ltd
Original Assignee
Ping An International Financial Leasing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An International Financial Leasing Co Ltd filed Critical Ping An International Financial Leasing Co Ltd
Priority to CN202310423777.8A priority Critical patent/CN116431443A/zh
Publication of CN116431443A publication Critical patent/CN116431443A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种日志记录方法、装置、计算机设备及计算机可读存储介质,涉及互联网技术领域,在分布式微服务环境下,只需引入封装好的日志记录工具,无需再进行定制化开发避免资源浪费,并且通过规范日志的输出格式,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。所述方法包括:基于切面编程技术,构建捕获接口参数的第一功能代码,接口参数包括异常参数、请求参数和返回参数;构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,第二功能代码将接口参数按照功能划分为多个功能域;响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。

Description

日志记录方法、装置、计算机设备及计算机可读存储介质
技术领域
本申请涉及互联网技术领域,特别是涉及一种日志记录方法、装置、计算机设备及计算机可读存储介质。
背景技术
日志记录是后端程序服务不可或缺的一部分,如果没有日志的记录归档,那么系统将处于无法感知到各方面参数的黑盒状态,所以业界推出了各种开源框架,可以帮助记录日志,并输出日志归档。而使用日志功能,就可以通过记录埋点,掌握用户的行为动作和数据变化,以及在监控到系统出现异常情况时,快速分析解决问题。
目前,业界推出的开源框仅提供了记录埋点和输出归档的功能,在面对分布式微服务系统时,就需要开发人员自行在此基础上扩展。实际上,每个开发人员均会在其对应管理的微服务中开发日志记录的功能,而为每个微服务都重新开发一套定制的日志封装会造成很多不必要的资源成本消耗,而且很难做到输出结构统一,风格统一,规范统一。因此,如何规范微服务日志记录格式成为行业内亟需解决的问题。
发明内容
有鉴于此,本申请提供了一种日志记录方法、装置、计算机设备及计算机可读存储介质,主要目的在于解决目前如何规范微服务日志记录格式的问题。
依据本申请第一方面,提供了一种日志记录方法,该方法包括:
基于切面编程技术,构建捕获接口参数的第一功能代码,所述接口参数包括异常参数、请求参数和返回参数;
构建第二功能代码,将所述第一功能代码和所述第二功能代码封装至日志记录工具,所述第二功能代码将所述接口参数按照功能划分为多个功能域;
响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录。
可选地,所述基于切面编程技术,构建捕获接口参数的第一功能代码,包括:
设置过滤接口,基于所述过滤接口对接口数据进行检测;
在系统或业务运行异常时,捕获所述异常参数,以及按照第一预设格式对所述异常参数进行封装;
在检测到目标请求方法时,依据第一函数捕获所述请求参数,依据第二函数捕获返回参数,以及按照第二预设格式对所述请求参数和所述返回参数进行封装。
可选地,所述基于切面编程技术,构建捕获接口参数的第一功能代码之前,所述方法还包括:
构建第三功能代码,将所述第三功能代码封装至所述日志记录工具;
其中,所述第三功能代码用于进行微服务交互,基于注解应用技术,继承熔断器机制的目标插件以及声明式客户端的拦截接口进行日志埋点,生成微服务之间的调用链路,所述目标插件用于包装熔断器线程执行的方法。
可选地,所述第二功能代码,包括:
获取所述第一功能代码输出的接口数据,基于日志内容和微服务规范,将日志格式划分为所述多个功能域,其中,所述功能域包括系统域、用户域和目标域,所述目标域用于映射诊断上下文。
可选地,所述构建第二功能代码之后,所述方法还包括:
构建第四功能代码,将所述第四功能代码封装至所述日志记录工具;
其中,所述第四功能代码添加多个链路追踪参数,通过所述多个链路追踪参数,设置将收集到的行为数据写入日志记录中,以及设置在接口返回数据前输出所述日志记录。
可选地,所述构建第四功能代码之后,所述方法还包括:
构建第五功能代码,将所述第五功能代码封装至所述日志记录工具;
其中,所述第五功能代码用于进行日志归档,基于日志框架,设置日志滚动切分规则以及写入方式,其中,所述写入方式包括异步写入和同步写入。
可选地,所述响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录,包括:
响应于所述微服务创建指令,获取所述日志记录工具,将所述日志记录工具引入所述微服务;
采用所述日志记录工具对系统数据或业务数据进行打点日志记录,得到目标日志,以及将所述目标日志发送至展示终端,以使开发人员基于所述目标日志对所述微服务进行管理。
依据本申请第二方面,提供了一种日志记录装置,该装置包括:
第一构建模块,用于基于切面编程技术,构建捕获接口参数的第一功能代码,所述接口参数包括异常参数、请求参数和返回参数;
第二构建模块,用于构建第二功能代码,将所述第一功能代码和所述第二功能代码封装至日志记录工具,所述第二功能代码将所述接口参数按照功能划分为多个功能域;
获取模块,用于响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录。
可选地,所述第一构建模块,用于设置过滤接口,基于所述过滤接口对接口数据进行检测;在系统或业务运行异常时,捕获所述异常参数,以及按照第一预设格式对所述异常参数进行封装;在检测到目标请求方法时,依据第一函数捕获所述请求参数,依据第二函数捕获返回参数,以及按照第二预设格式对所述请求参数和所述返回参数进行封装。
可选地,所述装置还包括:
第三构建模块,用于构建第三功能代码,将所述功能代码封装至所述日志记录工具;其中,所述第三功能代码用于进行微服务交互,基于注解应用技术,继承熔断器机制的目标插件以及声明式客户端的拦截接口进行日志埋点,生成微服务之间的调用链路,所述目标插件用于包装熔断器线程执行的方法。
可选地,所述第二构建模块,用于获取所述第一功能代码输出的接口数据,基于日志内容和微服务规范,将日志格式划分为所述多个功能域,其中,所述功能域包括系统域、用户域和目标域,所述目标域用于映射诊断上下文。
可选地,所述装置还包括:
第四构建模块,用于构建第四功能代码,将所述第四功能代码封装至所述日志记录工具;其中,所述第四功能代码添加多个链路追踪参数,通过所述多个链路追踪参数,设置将收集到的行为数据写入日志记录中,以及设置在接口返回数据前输出所述日志记录。
可选地,所述装置还包括:
第五构建模块,用于构建第五功能代码,将所述第五功能代码封装至所述日志记录工具;其中,所述第五功能代码用于进行日志归档,基于日志框架,设置日志滚动切分规则以及写入方式,其中,所述写入方式包括异步写入和同步写入。
可选地,所述获取模块,用于响应于所述微服务创建指令,获取所述日志记录工具,将所述日志记录工具引入所述微服务;采用所述日志记录工具对系统数据或业务数据进行打点日志记录,得到目标日志,以及将所述目标日志发送至展示终端,以使开发人员基于所述目标日志对所述微服务进行管理。
依据本申请第三方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述方法的步骤。
依据本申请第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。
借由上述技术方案,本申请提供的一种日志记录方法、装置、计算机设备及计算机可读存储介质,本申请首先基于切面编程技术,构建捕获接口参数的第一功能代码。依据第一功能代码可以捕获包括异常参数、请求参数和返回参数在内的接口参数。随后,构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,其中,第二功能代码可以将第一功能代码记录的接口参数按照功能划分为多个功能域。最后,响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。通过统一封装日志格式化的输出,有效降低了开发成本、运维成本。在分布式微服务环境下,微服务会随着业务的发展,变得越来越多,当每创建一个微服务时,只需引入封装好的日志记录工具,无需再进行定制化开发,使得微服务开发人员无需关注日志输出。通过规范日志的输出格式,能够非常清晰、快速的分析问题,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本申请实施例提供的一种日志记录方法流程示意图;
图2示出了本申请实施例提供的一种日志记录方法流程示意图;
图3示出了本申请实施例提供的一种日志记录装置的结构示意图;
图4示出了本申请实施例提供的一种计算机设备的装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
日志记录是后端程序服务不可或缺的一部分,如果没有日志的记录归档,那么系统将处于无法感知到各方面参数的黑盒状态,所以业界推出了各种开源框架,可以帮助记录日志,并输出日志归档。而使用日志功能,就可以通过记录埋点,掌握用户的行为动作和数据变化,以及在监控到系统出现异常情况时,快速分析解决问题。目前,业界推出的开源框仅提供了记录埋点和输出归档的功能,在面对分布式微服务系统时,就需要开发人员自行在此基础上扩展。实际上,每个开发人员均会在其对应管理的微服务中开发日志记录的功能,而为每个微服务都重新开发一套定制的日志封装会造成很多不必要的资源成本消耗,而且很难做到输出结构统一,风格统一,规范统一。因此,为了解决规范微服务日志记录格式的问题,本申请提供了一种日志记录方法,首先基于切面编程技术,构建捕获接口参数的第一功能代码。依据第一功能代码可以捕获包括异常参数、请求参数和返回参数在内的接口参数。随后,构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,其中,第二功能代码可以将第一功能代码记录的接口参数按照功能划分为多个功能域。最后,响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。通过统一封装日志格式化的输出,有效降低了开发成本、运维成本。在分布式微服务环境下,微服务会随着业务的发展,变得越来越多,当每创建一个微服务时,只需引入封装好的日志记录工具,无需再进行定制化开发,使得微服务开发人员无需关注日志输出。通过规范日志的输出格式,能够非常清晰、快速的分析问题,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。
本申请实施例提供了一种日志记录方法,如图1所示,该方法包括:
101、基于切面编程技术,构建捕获接口参数的第一功能代码,接口参数包括异常参数、请求参数和返回参数。
在本申请实施例中,首先开发人员基于切面编程技术spring aop的特性构建捕获接口参数的第一功能代码,第一功能代码可以用于捕获包括异常参数、请求参数和返回参数在内的接口参数。需要说明的是,AOP为Aspect Oriented Programming的缩写,意为面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。其中,Spring框架是一个开放源代码的J2EE应用程序框架,是针对bean的生命周期进行管理的轻量级容器。
102、构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,第二功能代码将接口参数按照功能划分为多个功能域。
在本申请实施例中,需要依据slf4j(simple logging facade for java,java的简单日志外观)、json(JavaScript Object Notation,轻量级数据交换格式)、logging规范,构建第二功能代码,以使第二功能代码可以将接口参数按照功能划分为多个功能域。其中,slf4j能够提供一个一致的API来使用不同的日志框架,比如:java.util.logging,logback,log4j等。slf4j使用户可以在运行时嵌入想要使用的日志框架。进一步地,由于相关技术人员均会在各自管理的微服务中开发日志记录这个功能,但项目周期和启动时间各不相同,为每个微服务都重新开发一套定制的日志封装,会造成很多不必要的资源成本消耗,费时费力。另一方面,微服务之间是高度解耦,但却衔接紧密的关系,所以在此前提下,很难做到输出结构统一,风格统一,规范统一的日志记录。因此,本申请将构建的第一功能代码和第二功能代码封装至日志记录工具,用户仅需引入日志记录工具即可使用日志记录工具进行日志记录。
103、响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。
在本申请实施例中,用户在使用该日志记录工具时,如同使用开源框架一样,用同样的方式引入、申明对象及输出日志即可,无需重复编码,有效释放了该功能的开发人力。
本申请实施例提供的方法,首先基于切面编程技术,构建捕获接口参数的第一功能代码。依据第一功能代码可以捕获包括异常参数、请求参数和返回参数在内的接口参数。随后,构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,其中,第二功能代码可以将第一功能代码记录的接口参数按照功能划分为多个功能域。最后,响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。通过统一封装日志格式化的输出,有效降低了开发成本、运维成本。在分布式微服务环境下,微服务会随着业务的发展,变得越来越多,当每创建一个微服务时,只需引入封装好的日志记录工具,无需再进行定制化开发,使得微服务开发人员无需关注日志输出。通过规范日志的输出格式,能够非常清晰、快速的分析问题,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。
本申请实施例提供了一种日志记录方法,如图2所示,该方法包括:
201、构建第三功能代码,将第三功能代码封装至日志记录工具。
在本申请实施例中,日志记录工具的依赖包中还封装有第三功能代码,构建的第三功能代码用于进行微服务交互,基于注解应用feignClient,继承熔断器机制的目标插件以及声明式客户端的拦截接口进行日志埋点,生成微服务之间的调用链路,所述目标插件用于包装熔断器线程执行的方法。
具体地,通过继承熔断器机制,即hystrix的HystrixConcurrencyStrategy目标插件用以包装hystrix线程执行的方法。再集成声明式客户端feign的拦截接口,即RequestInterceptor接口用以拦截参数,实现feign的埋点,从而做到微服务之间存在完整的调用链路。进而将构建完成的第三功能代码封装至日志记录工具中,以便后续直接调用日志记录工具实现该第三功能模块提供的功能。需要说明的是hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix熔断器机制能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。当某个服务单元发生故障之后,通过故障监控向调用方返回一个符合预期的、可处理的备选响应,而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。
202、基于切面编程技术,构建捕获接口参数的第一功能代码,以及构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具。
在本申请实施例中,首先开发人员基于切面编程技术spring aop的特性构建捕获接口参数的第一功能代码,以使第一功能代码能够捕获包括异常参数、请求参数和返回参数在内的接口参数,以及依据slf4j(simple logging facade for java,java的简单日志外观)、json(JavaScript Object Notation,轻量级数据交换格式)、logging规范,构建第二功能代码,以使第二功能代码可以将接口参数按照功能划分为多个功能域。
对于第一功能代码的构建,首先基于切面编程技术spring aop的特性,增加actionAspect环绕切面以及继承HttpServletRequestWrapper和实现Filter过滤接口。需要说明的是,AOP为Aspect Oriented Programming的缩写,意为面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。其中,Spring框架是一个开放源代码的J2EE应用程序框架,是针对bean的生命周期进行管理的轻量级容器。具体地,设置实现Filter过滤接口,基于Filter接口对接口数据进行检测,在系统或业务运行异常时,捕获异常参数,在实际运行过程中,可以是在RuntimeException时捕获异常,以及按照第一预设格式对异常参数进行封装。在检测到目标请求方法时,如在检测到get、post、put等目标请求方法时,依据第一函数beforeHandler捕获请求参数,依据第二函数afterHandler捕获返回参数,以及按照第二预设格式对请求参数和返回参数进行封装。进而将第一功能代码封装至日志记录工具中,以使后续可以通过引入日志记录工具直接使用第一功能代码捕获接口参数的功能。
对于构建第二功能代码,在本申请实施例中,需要依据slf4j(simple loggingfacade 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 ObjectNotation,轻量级数据交换格式)、logging规范,将日志统一化格式,划分为多个功能域即系统域(system)、用户域(user)、目标域目标域为MDC(链路追踪)域,用于映射诊断上下文。具体划分过程参考如下报文:
Figure BDA0004188917560000101
进一步地,由于目前相关技术人员均会在各自管理的微服务中开发日志记录这个功能,但项目周期和启动时间各不相同,为每个微服务都重新开发一套定制的日志封装,会造成很多不必要的资源成本消耗,费时费力。另一方面,微服务之间是高度解耦,但却衔接紧密的关系,所以在此前提下,很难做到输出结构统一,风格统一,规范统一的日志记录。因此,本申请将构建的第一功能代码和第二功能代码封装至日志记录工具,用户仅需引入日志记录工具即可使用日志记录工具进行日志记录。
203、构建第四功能代码以及第五功能代码,将第四功能代码和第五功能代码封装至日志记录工具。
在本申请实施例中,日志记录工具的依赖包中还封装有第四功能代码和第五功能代码,构建的第四功能代码添加多个链路追踪参数,通过多个链路追踪参数,设置将收集到的行为数据写入日志记录中,以及设置在接口返回数据前输出日志记录。构建的第五功能代码用于日志归档。
具体地,对于构建第四功能代码,增加traceId等链路追踪参数,在API返回前自动输出一条格式化后的日志,用以打点。需要说明的是,traceId等链路追踪参数,用于标识某一次具体的请求ID。当用户的请求进入系统后,会在RPC调用网络的第一层生成一个全局唯一的traceId,并且会随着每一层的RPC调用,不断往后传递,这样的话,通过traceId就可以把一次用户请求在系统中调用的路径串联起来。对于构建第五功能代码,基于logback日志框架,设置日志滚动切分规则以及写入方式,其中,写入方式包括异步写入和同步写入。需要说明的是,Logback是SpringBoot内置的日志处理框架,spring-boot-starter其中包含了spring-boot-starter-logging,该依赖内容就是Spring Boot默认的日志框架logback。
204、响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。
在本申请实施例中,用户在使用该日志记录工具时,如同使用开源框架一样,用同样的方式引入、申明对象及输出日志即可,无需重复编码,有效释放了该功能的开发人力。
具体地,响应于微服务创建指令,获取日志记录工具,将日志记录工具引入微服务,引入过程如下:
Logger logger=LoggerFactory.getLogger(this.getClass());<br/>
*logger.trace().xxx.log();<br/>
*logger.info().xxx.log();<br/>
进一步地,采用日志记录工具对系统数据或业务数据进行打点日志记录,得到目标日志,以及将目标日志发送至展示终端,以使开发人员基于目标日志对微服务进行管理。在本步骤中,对于日志输出代码的对象,做了统一封装,并作为一个公共功能打包成一个sdk依赖包,也就是日志记录工具,从而无需重复编码,有效释放了该功能的开发人力。
本申请实施例提供的方法,首先基于切面编程技术,构建捕获接口参数的第一功能代码。依据第一功能代码可以捕获包括异常参数、请求参数和返回参数在内的接口参数。随后,构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,其中,第二功能代码可以将第一功能代码记录的接口参数按照功能划分为多个功能域。最后,响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。通过统一封装日志格式化的输出,有效降低了开发成本、运维成本。在分布式微服务环境下,微服务会随着业务的发展,变得越来越多,当每创建一个微服务时,只需引入封装好的日志记录工具,无需再进行定制化开发,使得微服务开发人员无需关注日志输出。通过规范日志的输出格式,能够非常清晰、快速的分析问题,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。
进一步地,作为图1所述方法的具体实现,本申请实施例提供了一种日志记录装置,如图3所示,所述装置包括:第一构建模块301、第二构建模块302、获取模块303。
该第一构建模块301,用于基于切面编程技术,构建捕获接口参数的第一功能代码,所述接口参数包括异常参数、请求参数和返回参数;
该第二构建模块302,用于构建第二功能代码,将所述第一功能代码和所述第二功能代码封装至日志记录工具,所述第二功能代码将所述接口参数按照功能划分为多个功能域;
该获取模块303,用于响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录。
在具体的应用场景中,所述第一构建模块,用于设置过滤接口,基于所述过滤接口对接口数据进行检测;在系统或业务运行异常时,捕获所述异常参数,以及按照第一预设格式对所述异常参数进行封装;在检测到目标请求方法时,依据第一函数捕获所述请求参数,依据第二函数捕获返回参数,以及按照第二预设格式对所述请求参数和所述返回参数进行封装。
在具体的应用场景中,所述装置还包括:第三构建模块304。
该第三构建模块304,用于构建第三功能代码,将所述功能代码封装至所述日志记录工具;其中,所述第三功能代码用于进行微服务交互,基于注解应用技术,继承熔断器机制的目标插件以及声明式客户端的拦截接口进行日志埋点,生成微服务之间的调用链路,所述目标插件用于包装熔断器线程执行的方法。
在具体的应用场景中,该第二构建模块302,用于获取所述第一功能代码输出的接口数据,基于日志内容和微服务规范,将日志格式划分为所述多个功能域,其中,所述功能域包括系统域、用户域和目标域,所述目标域用于映射诊断上下文。
在具体的应用场景中,所述装置还包括:第四构建模块305。
该第四构建模块305,用于构建第四功能代码,将所述第四功能代码封装至所述日志记录工具;其中,所述第四功能代码添加多个链路追踪参数,通过所述多个链路追踪参数,设置将收集到的行为数据写入日志记录中,以及设置在接口返回数据前输出所述日志记录。
在具体的应用场景中,所述装置还包括:第五构建模块306。
该第五构建模块306,用于构建第五功能代码,将所述第五功能代码封装至所述日志记录工具;其中,所述第五功能代码用于进行日志归档,基于日志框架,设置日志滚动切分规则以及写入方式,其中,所述写入方式包括异步写入和同步写入。
在具体的应用场景中,该获取模块303,用于响应于所述微服务创建指令,获取所述日志记录工具,将所述日志记录工具引入所述微服务;采用所述日志记录工具对系统数据或业务数据进行打点日志记录,得到目标日志,以及将所述目标日志发送至展示终端,以使开发人员基于所述目标日志对所述微服务进行管理。
本申请实施例提供的装置,首先基于切面编程技术,构建捕获接口参数的第一功能代码。依据第一功能代码可以捕获包括异常参数、请求参数和返回参数在内的接口参数。随后,构建第二功能代码,将第一功能代码和第二功能代码封装至日志记录工具,其中,第二功能代码可以将第一功能代码记录的接口参数按照功能划分为多个功能域。最后,响应于微服务创建指令,获取日志记录工具,以及采用日志记录工具对微服务进行日志记录。通过统一封装日志格式化的输出,有效降低了开发成本、运维成本。在分布式微服务环境下,微服务会随着业务的发展,变得越来越多,当每创建一个微服务时,只需引入封装好的日志记录工具,无需再进行定制化开发,使得微服务开发人员无需关注日志输出。通过规范日志的输出格式,能够非常清晰、快速的分析问题,极大地提高了排查问题需要消耗的时间,进而快速的定位问题。
需要说明的是,本申请实施例提供的一种日志记录装置所涉及各功能单元的其他相应描述,可以参考图1和图2中的对应描述,在此不再赘述。
在示例性实施例中,参见图4,还提供了一种设备,该设备包括通信总线、处理器、存储器和通信接口,还可以包括输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的日志记录方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的日志记录方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。

Claims (10)

1.一种日志记录方法,其特征在于,包括:
基于切面编程技术,构建捕获接口参数的第一功能代码,所述接口参数包括异常参数、请求参数和返回参数;
构建第二功能代码,将所述第一功能代码和所述第二功能代码封装至日志记录工具,所述第二功能代码将所述接口参数按照功能划分为多个功能域;
响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录。
2.根据权利要求1所述的方法,其特征在于,所述基于切面编程技术,构建捕获接口参数的第一功能代码,包括:
设置过滤接口,基于所述过滤接口对接口数据进行检测;
在系统或业务运行异常时,捕获所述异常参数,以及按照第一预设格式对所述异常参数进行封装;
在检测到目标请求方法时,依据第一函数捕获所述请求参数,依据第二函数捕获返回参数,以及按照第二预设格式对所述请求参数和所述返回参数进行封装。
3.根据权利要求1所述的方法,其特征在于,所述基于切面编程技术,构建捕获接口参数的第一功能代码之前,所述方法还包括:
构建第三功能代码,将所述第三功能代码封装至所述日志记录工具;
其中,所述第三功能代码用于进行微服务交互,基于注解应用技术,继承熔断器机制的目标插件以及声明式客户端的拦截接口进行日志埋点,生成微服务之间的调用链路,所述目标插件用于包装熔断器线程执行的方法。
4.根据权利要求1所述的方法,其特征在于,所述第二功能代码,包括:
获取所述第一功能代码输出的接口数据,基于日志内容和微服务规范,将日志格式划分为所述多个功能域,其中,所述功能域包括系统域、用户域和目标域,所述目标域用于映射诊断上下文。
5.根据权利要求1所述的方法,其特征在于,所述构建第二功能代码之后,所述方法还包括:
构建第四功能代码,将所述第四功能代码封装至所述日志记录工具;
其中,所述第四功能代码添加多个链路追踪参数,通过所述多个链路追踪参数,设置将收集到的行为数据写入日志记录中,以及设置在接口返回数据前输出所述日志记录。
6.根据权利要求5所述的方法,其特征在于,所述构建第四功能代码之后,所述方法还包括:
构建第五功能代码,将所述第五功能代码封装至所述日志记录工具;
其中,所述第五功能代码用于进行日志归档,基于日志框架,设置日志滚动切分规则以及写入方式,其中,所述写入方式包括异步写入和同步写入。
7.根据权利要求1所述的方法,其特征在于,所述响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录,包括:
响应于所述微服务创建指令,获取所述日志记录工具,将所述日志记录工具引入所述微服务;
采用所述日志记录工具对系统数据或业务数据进行打点日志记录,得到目标日志,以及将所述目标日志发送至展示终端,以使开发人员基于所述目标日志对所述微服务进行管理。
8.一种日志记录装置,其特征在于,包括:
第一构建模块,用于基于切面编程技术,构建捕获接口参数的第一功能代码,所述接口参数包括异常参数、请求参数和返回参数;
第二构建模块,用于构建第二功能代码,将所述第一功能代码和所述第二功能代码封装至日志记录工具,所述第二功能代码将所述接口参数按照功能划分为多个功能域;
获取模块,用于响应于微服务创建指令,获取所述日志记录工具,以及采用所述日志记录工具对所述微服务进行日志记录。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202310423777.8A 2023-04-19 2023-04-19 日志记录方法、装置、计算机设备及计算机可读存储介质 Pending CN116431443A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310423777.8A CN116431443A (zh) 2023-04-19 2023-04-19 日志记录方法、装置、计算机设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310423777.8A CN116431443A (zh) 2023-04-19 2023-04-19 日志记录方法、装置、计算机设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN116431443A true CN116431443A (zh) 2023-07-14

Family

ID=87090624

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310423777.8A Pending CN116431443A (zh) 2023-04-19 2023-04-19 日志记录方法、装置、计算机设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN116431443A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117312117A (zh) * 2023-11-30 2023-12-29 沐曦集成电路(杭州)有限公司 一种打点数据的处理方法、装置、设备及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117312117A (zh) * 2023-11-30 2023-12-29 沐曦集成电路(杭州)有限公司 一种打点数据的处理方法、装置、设备及介质
CN117312117B (zh) * 2023-11-30 2024-03-01 沐曦集成电路(杭州)有限公司 一种打点数据的处理方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
US10146663B2 (en) Modeling and testing interactions between components of a software system
CN103186740B (zh) 一种Android恶意软件的自动化检测方法
CN111752799A (zh) 一种业务链路跟踪方法、装置、设备及储存介质
US9015832B1 (en) Application auditing through object level code inspection
US7954011B2 (en) Enabling tracing operations in clusters of servers
US8601443B2 (en) Method and system for correlating trace data
CN107957941B (zh) 移动终端内存泄漏处理方法和装置
US9697104B2 (en) End-to end tracing and logging
CN107704360B (zh) 监控数据的处理方法、设备、服务器及存储介质
US8572625B2 (en) Method and system for application migration using per-application persistent configuration dependency
CN111183425A (zh) 用于实现数字云取证的系统和方法
CN108038039B (zh) 记录日志的方法及微服务系统
CN111447170B (zh) 数据处理方法及其系统、计算机系统及计算机可读介质
CN110309029A (zh) 异常数据的采集方法、装置、计算机设备和存储介质
CN110287053B (zh) 分布式系统异常统一处理的方法
CN114978940B (zh) 链路监控及告警方法、装置、计算机设备和存储介质
CN116431443A (zh) 日志记录方法、装置、计算机设备及计算机可读存储介质
CN110457132B (zh) 一种功能对象的创建方法、装置和终端设备
CN114745295A (zh) 数据采集方法、装置、设备和可读存储介质
US11635972B2 (en) Multi-tenant java agent instrumentation system
CN113296981A (zh) 数据处理方法、装置、电子设备及存储介质
CN103577273A (zh) 共同操作的多映像系统中的第二故障数据捕获
US8918765B2 (en) Auto-documenting based on real-time analysis of code execution
CN107861821B (zh) 模块调用关系的挖掘方法、装置及计算机可读介质
CN115705190A (zh) 依赖程度的确定方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination