日志级别调节方法、装置、计算机设备和存储介质与流程

文档序号:26139582发布日期:2021-08-03 14:23阅读:104来源:国知局
日志级别调节方法、装置、计算机设备和存储介质与流程

本申请涉及过程优化领域,尤其涉及一种日志级别调节方法、装置、计算机设备和存储介质。



背景技术:

springboot是一种用来简化spring应用的初始搭建以及开发过程的全新框架。在生产环境中,当需要调节springboot框架中的应用程序的日志级别时,通常是通过修改配置文件后重启应用程序或通过actuator组件来实现。若重启应用程序,则会影响业务系统的正常运行;若通过actuator组件调节日志级别,则由于actuator组件过大以及配置过程繁琐,导致系统臃肿,并且actuator组件需要重新进行权限认证,极大地降低调节日志级别的便捷性。

因此如何提高日志级别调节的便捷性成为亟需解决的问题。



技术实现要素:

本申请提供了一种日志级别调节方法、装置、计算机设备和存储介质,通过在应用程序的启动阶段根据目标日志注解确定日志调节接口,在应用程序的运行阶段通过日志调节接口接收日志级别调节请求,实现根据日志级别调节请求实时进行日志级别调节,提高了调节日志级别的便捷性。

第一方面,本申请提供了一种日志级别调节方法,所述方法包括:

当检测到目标日志注解时,根据所述目标日志注解确定日志调节接口;

若检测到所述日志调节接口的调用操作,则根据所述调用操作获取日志级别调节请求;

根据所述日志级别调节请求,确定待进行日志级别调节的目标日志对象以及目标日志级别;

将所述目标日志对象当前的日志级别调节至所述目标日志级别。

第二方面,本申请还提供了一种日志级别调节装置,所述装置包括:

调节接口确定模块,用于当检测到目标日志注解时,根据所述目标日志注解确定日志调节接口;

调节请求接收模块,用于若检测到所述日志调节接口的调用操作,则根据所述调用操作获取日志级别调节请求;

日志信息确定模块,用于根据所述日志级别调节请求,确定待进行日志级别调节的目标日志对象以及目标日志级别;

日志级别调节模块,用于将所述目标日志对象当前的日志级别调节至所述目标日志级别。

第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器;

所述存储器,用于存储计算机程序;

所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述的日志级别调节方法。

第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述的日志级别调节方法。

本申请公开了一种日志级别调节方法、装置、计算机设备和存储介质,通过当检测到目标日志注解时,根据目标日志注解确定日志调节接口,可以实现在应用程序的启动阶段根据目标日志注解确定日志调节接口;通过若检测到日志调节接口的调用操作,则根据调用操作获取日志级别调节请求,可以实现在应用程序的运行阶段通过日志调节接口接收日志级别调节请求;通过根据日志级别调节请求,确定待进行日志级别调节的目标日志对象以及目标日志级别,将目标日志对象当前的日志级别调节至目标日志级别,无需重启应用程序或通过actuator组件来进行日志级别调节,可以实现根据日志级别调节请求实时进行日志级别调节,提高了调节日志级别的便捷性。

附图说明

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

图1是本申请实施例提供的一种日志级别调节方法的示意性流程图;

图2是本申请实施例提供的一种确定日志调节接口的子步骤的示意性流程图;

图3是本申请实施例提供的一种获取控制对象信息的示意性流程图;

图4是本申请实施例提供的一种日志级别调节装置的示意性框图;

图5是本申请实施例提供的一种计算机设备的结构示意性框图。

具体实施方式

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

附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。

应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

本申请的实施例提供了一种日志级别调节方法、装置、计算机设备和存储介质。其中,该日志级别调节方法可以应用于服务器或终端中,通过在应用程序的启动阶段根据目标日志注解确定日志调节接口,在应用程序的运行阶段通过日志调节接口接收日志级别调节请求,可以实现根据日志级别调节请求实时进行日志级别调节,提高了调节日志级别的便捷性。

其中,服务器可以为独立的服务器,也可以为服务器集群。终端可以是智能手机、平板电脑、笔记本电脑和台式电脑等电子设备。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

如图1所示,日志级别调节方法包括步骤s10至步骤s40。

步骤s10、当检测到目标日志注解时,根据所述目标日志注解确定日志调节接口。

需要说明的是,本申请实施例提供的日志级别调节方法可以应用于springboot框架中的应用程序的日志级别调节场景中。例如,在应用程序的启动阶段,根据目标日志注解确定暴露的日志调节接口;在应用程序的运行阶段,通过日志调节接口接收日志级别调节请求。因此,在生产环境中,可以根据日志级别调节请求实时进行日志级别调节,无需重启应用程序或通过actuator组件来进行日志级别调节,避免繁琐的配置过程和重新进行权限日志,从而提高了调节日志级别的便捷性。

需要说明的是,日志调节接口是指用于调节日志级别的应用程序接口。暴露是指日志调节接口可以被外部程序调用。

在本申请实施例中,可以预先在启动类上添加enablechangeloglevel注解,从而可以实现在应用程序的启动阶段,根据检测到的enablechangeloglevel注解,结合反射机制、导入选择器,自动生成日志调节接口,省去繁琐的配置过程。

示例性的,可以在应用程序启动时,检测日志注解;当检测到目标日志注解时,根据目标日志注解确定日志调节接口。例如,可以扫描启动类上的全部日志注解,获取预先定义好的目标日志注解。其中,目标日志注解是指启用更改日志级别的标签;目标日志注解可以是enablechangeloglevel注解。

通过在应用程序的启动阶段检测目标日志注解,可以根据检测到的目标日志注解生成日志调节接口,后续可以通过日志调节接口接收日志调节请求并根据日志调节请求进行日志级别的调节,无需重启应用程序或通过actuator组件来进行日志级别调节,提高了调节日志级别的便捷性。

在本申请实施例中,在检测到目标日志注解时,可以根据目标日志注解确定日志调节接口。请参阅图2,图2是本申请实施例提供的一种确定日志调节接口的子步骤的示意性流程图,具体可以包括以下步骤s101至步骤s103。

步骤s101、确定所述目标日志注解对应的目标导入选择器,并获取所述目标导入选择器对应的控制对象信息。

需要说明的是,导入选择器用于收集需要导入的配置信息,配置信息中定义了要实例化的控制对象信息。其中,目标导入选择器可以是importselector接口。

在一些实施例中,确定目标日志注解对应的目标导入选择器,可以包括:对目标日志注解进行解析,获得目标日志注解对应的目标注解值;基于预设的注解值与导入选择器之间的对应关系,根据目标注解值确定目标导入选择器。

示例性的,可以对目标日志注解进行解析,获取目标日志注解中的import注解值,从而得到目标注解值。其中,解析是指读取目标日志注解中的相关信息。需要说明的是,import注解值是在编码阶段写入目标日志注解的,定义了需要调用的导入选择器。例如,可以将import注解值与需要调用的导入选择器进行关联。

示例性的,在获得目标日志注解对应的目标注解值之后,可以基于预设的注解值与导入选择器之间的对应关系,根据目标注解值确定目标导入选择器。

请参阅图3,图3是本申请实施例提供的一种获取控制对象信息的示意性流程图。如图3所示,获取目标导入选择器对应的控制对象信息,可以包括:对目标导入选择器进行解析,获得目标导入选择器对应的配置信息;根据配置信息,确定控制对象信息。

需要说明的是,目标导入选择器可以通过selectimports方法注明需要导入的外部的配置信息。因此可以对目标导入选择进行解析,通过selectimports方法,确定配置信息。

示例性的,可以对配置信息进行解析,从而获得控制对象信息。其中,控制对象信息可以包括提供给外部程序调用的日志调节接口对应的接口信息。

需要说明的是,配置信息中定义了待实例化的控制对象信息;对控制对象信息进行实例化后,可以得到对应的控制对象。

步骤s102、对所述控制对象信息进行实例化,获得所述控制对象信息对应的控制对象。

示例性的,可以基于预设的反射机制,对控制对象信息进行实例化,获得控制对象信息对应的控制对象。

其中,预设的反射机制可以是java反射机制。需要说明的是,java反射机制是一种动态获取信息以及动态调用对象的方法的功能。例如在运行状态中,对于任意一个类,java反射机制能够获取这个类的所有属性和方法;对于任意一个对象,java反射机制能够调用它的任意一个方法和属性。

可以理解的是,实例化是指通过类(class)创建出该类的一个对象(object)的过程。在本申请实施例中,控制对象信息可以作为一个类。

步骤s103、根据所述控制对象,确定所述日志调节接口。

示例性的,可以根据控制对象包含的接口,确定为日志调节接口。其中,日志调节接口的通信协议可以设置为http(hypertexttransferprotocol,超文本传输)协议。例如,外部程序可以基于http协议调用日志调节接口。通过将日志调节接口的通信协议设置为http协议,可以为后续编程调用运维工具预留空间。可以理解的是,当后续有运维工具需要接入时,可以直接通过http协议接入日志调节接口。

需要说明的是,由于控制对象信息包括提供给外部程序调用的日志调节接口对应的接口信息,因此,由控制对象信息实例化得到的控制对象包含日志调节接口。可以理解的是,控制对象相当于集成各种功能的接口的容器,控制对象可以通过其集成的接口实现不同的功能。例如,可以通过日志调节接口,实现对日志对象的日志级别进行调节。

通过获取导入选择器对应的控制对象信息,对控制对象信息进行实例化,并根据实例化得到的控制对象确定日志调节接口,可以实现在现有业务系统的权限控制系统下对日志调节接口进行权限控制,无需采用另一套的权限控制系统对日志调节接口进行权限控制,可以节省系统资源和人力成本。

在一些实施例中,根据控制对象,确定日志调节接口之后,还可以包括:获取应用程序中的上下文环境对象;将控制对象添加至上下文环境对象中,以更新上下文环境对象,更新上下文环境对象包括将日志调节接口添加至预设的应用程序接口列表。

示例性的,可以将控制对象添加至控制反转(inversionofcontrol,ioc)容器中。需要说明的是,控制反转容器是上下文环境对象的一个容器。上下文环境对象是指应用程序运行时的上下文环境;上下文环境对象,用于管理应用程序接口列表。当将控制对象添加至控制反转容器时,由于控制对象包含日志调节接口,因此控制反转容器根据日志调节接口更新上下文环境对象。例如,将日志调节接口添加至上下文环境对象中的应用程序接口列表。

为进一步保证上述应用程序接口列表的私密和安全性,上述应用程序接口列表可以存储于一区块链的节点中。

通过将日志调节接口添加至应用程序接口列表,可以使得外部程序调用应用程序接口列表中的日志调节接口。

步骤s20、若检测到所述日志调节接口的调用操作,则根据所述调用操作获取日志级别调节请求。

需要说明的是,在应用程序的运行阶段,用户可以根据实际需求调节日志级别。例如,用户需要修改某个类中的日志对象的日志级别时,可以调用日志调节接口,发起日志级别调节请求。

示例性的,当检测到日志调节接口的调用操作,则根据调用操作获取日志级别调节请求。其中,日志级别调节请求包括类名信息与日志级别信息。类名信息用于确定待进行日志级别调节的目标日志对象;日志级别信息用于确定目标日志对象调节后的日志级别。需要说明的是,用户在发起日志级别调节请求时,可以将类名信息与日志级别信息添加至日志级别调节请求中。

通过检测日志调节接口是否接收到调用操作,可以通过日志调节接口获取日志级别调节请求,无需额外的权限认证,可以便于用户直接通过调用日志调节接口实现对日志对象进行日志级别调节。

步骤s30、根据所述日志级别调节请求,确定待进行日志级别调节的目标日志对象以及目标日志级别。

需要说明的是,在本申请实施例中,通过日志级别调节请求确定进行日志级别调节的目标日志对象以及目标日志级别,可以精确地对某个类中的日志对象进行日志级别调节,实现在生产环境中可以更加精确地打印需要的日志。

在一些实施例中,根据日志级别调节请求,确定待进行日志级别调节的目标日志对象以及目标日志级别,可以包括:根据类名信息,确定待进行日志级别调节的目标日志对象;根据日志级别信息,确定目标日志级别。

其中,根据类名信息,确定待进行日志级别调节的所述目标日志对象,可以包括:获取日志上下文环境对象;根据类名信息,确定日志上下文环境对象中的目标类;根据目标类中的日志对象,确定目标日志对象。

需要说明的是,日志上下文环境对象是指日志对象对应的运行环境信息,可以包括日志对象所在的类。

示例性的,可以通过日志工厂类调用获取日志上下文环境对象的方法来获取日志上下文环境对象。然后根据类名信息,确定日志上下文环境对象中的目标类,进而可以根据目标类中的日志对象,确定目标日志对象。其中,类名信息可以是类的名称。需要说明的是,在记录日志时,每个类中会定义一个日志对象,然后利用这个日志对象去写日志;因此,可以根据目标类,确定目标日志对象。

在一些实施方式中,当用户需要调节com.pingan.xxx.test类中的日志对象的日志级别时,可以通过日志工厂类调用获取日志上下文环境对象的方法来获取日志上下文环境对象,可以通过如下函数实现:loggercontextloggercontext=(loggercontext)loggerfactory.getiloggerfactory()。

其中,loggercontext表示日志上下文环境对象的数据类型,loggercontext表示日志上下文环境对象的名称。在根据目标类中的日志对象,确定目标日志对象时,可以通过如下函数实现:loggerlogger=loggercontext.getlogger("com.pingan.xxx.test")。其中,loggerlogger表示目标日志对象的数据类型,logger表示目标日志对象的名称。

通过根据类名信息,确定待进行日志级别调节的目标日志对象,可以实现更加精确地对某一个类中的日志对象的日志级别进行调节,与actuator组件的包级别调节相比,调节的粒度更细、更加精准。

示例性的,日志级别信息可以包括目标日志对象的日志级别。需要说明的是,在java体系中,日志级别共有8级;优先级从高到低依次为:off、fatal、error、warn、info、debug、trace、all。其中off是最高级别,用于关闭日志记录;fatal表示导致应用程序提前终止的严重错误;error表示其它运行时错误或意外情况;warn表示使用已过时的api,api的滥用、潜在错误,其它不良的或意外的运行状况;info表示令人感兴趣的运行时事件;debug表示流经系统的详细信息;trace表示最详细的信息;all表示打开所有日志记录。

例如,当日志级别信息包括info级别时,表示用户需要将目标日志对象当前的日志级别调节为info级别。

又例如,当日志级别信息包括all级别时,表示用户需要将目标日志对象当前的日志级别调节为all级别。

步骤s40、将所述目标日志对象当前的日志级别调节至所述目标日志级别。

示例性的,在确定待进行日志级别调节的目标日志对象以及目标日志级别之后,可以将目标日志对象当前的日志级别调节至目标日志级别。需要说明的是,通过将目标日志对象当前的日志级别调节至目标日志级别,可以使得目标日志对象根据目标日志级别对日志记录进行管理,输出目标日志级别对应的日志记录。

例如,若目标日志级别为info级别,则可以通过调用setlevel方法实现,具体如下:logger.setlevel(level.tolevel(“info”))。

又例如,若目标日志级别为all级别,则可以通过调用setlevel方法实现,具体如下:logger.setlevel(level.tolevel(“all”))。

通过将目标日志对象当前的日志级别调节至目标日志级别,可以实现根据日志级别调节请求实时进行日志级别调节,提高了调节日志级别的便捷性。

上述实施例提供的日志级别调节方法,通过在应用程序的启动阶段检测目标日志注解,可以根据检测到的目标日志注解生成日志调节接口,后续可以通过日志调节接口接收日志调节请求并根据日志调节请求进行日志级别的调节,无需重启应用程序或通过actuator组件来进行日志级别调节,提高了调节日志级别的便捷性;通过获取导入选择器对应的控制对象信息,对控制对象信息进行实例化,并根据实例化得到的控制对象确定日志调节接口,可以实现在现有业务系统的权限控制系统下对日志调节接口进行权限控制,无需采用另一套的权限控制系统对日志调节接口进行权限控制,可以节省系统资源和人力成本;通过将日志调节接口的通信协议设置为http协议,可以为后续编程调用运维工具预留空间;通过将日志调节接口添加至应用程序接口列表,可以使得外部程序调用应用程序接口列表中的日志调节接口;通过检测日志调节接口是否接收到调用操作,可以通过日志调节接口获取日志级别调节请求,无需额外的权限认证,可以便于用户直接通过调用日志调节接口实现对日志对象进行日志级别调节;通过根据类名信息,确定待进行日志级别调节的目标日志对象,可以实现更加精确地对某一个类中的日志对象的日志级别进行调节,与actuator组件的包级别调节相比,调节的粒度更细、更加精准;通过将目标日志对象当前的日志级别调节至目标日志级别,可以实现根据日志级别调节请求实时进行日志级别调节,提高了调节日志级别的便捷性。

请参阅图4,图4是本申请的实施例还提供一种日志级别调节装置1000的示意性框图,该日志级别调节装置用于执行前述的日志级别调节方法。其中,该日志级别调节装置可以配置于服务器或终端中。

如图4所示,该日志级别调节装置1000,包括:调节接口确定模块1001、调节请求接收模块1002、日志信息确定模块1003和日志级别调节模块1004。

调节接口确定模块1001,用于当检测到目标日志注解时,根据所述目标日志注解确定日志调节接口。

调节请求接收模块1002,用于若检测到所述日志调节接口的调用操作,则根据所述调用操作获取日志级别调节请求。

日志信息确定模块1003,用于根据所述日志级别调节请求,确定待进行日志级别调节的目标日志对象以及目标日志级别。

日志级别调节模块1004,用于将所述目标日志对象当前的日志级别调节至所述目标日志级别。

需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

上述的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图5所示的计算机设备上运行。

请参阅图5,图5是本申请实施例提供的一种计算机设备的结构示意性框图。

请参阅图5,该计算机设备包括通过系统总线连接的处理器和存储器,其中,存储器可以包括非易失性存储介质和内存储器。

处理器用于提供计算和控制能力,支撑整个计算机设备的运行。

内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种日志级别调节方法。

应当理解的是,处理器可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:

当检测到目标日志注解时,根据所述目标日志注解确定日志调节接口;若检测到所述日志调节接口的调用操作,则根据所述调用操作获取日志级别调节请求;根据所述日志级别调节请求,确定待进行日志级别调节的目标日志对象以及目标日志级别;将所述目标日志对象当前的日志级别调节至所述目标日志级别。

在一个实施例中,所述处理器在实现根据所述目标日志注解确定日志调节接口时,用于实现:

确定所述目标日志注解对应的目标导入选择器,并获取所述目标导入选择器对应的控制对象信息;对所述控制对象信息进行实例化,获得所述控制对象信息对应的控制对象;根据所述控制对象,确定所述日志调节接口。

在一个实施例中,所述处理器在实现确定所述目标日志注解对应的目标导入选择器时,用于实现:

对所述目标日志注解进行解析,获得所述目标日志注解对应的目标注解值;基于预设的注解值与导入选择器之间的对应关系,根据所述目标注解值确定所述目标导入选择器。

在一个实施例中,所述处理器在实现获取所述目标导入选择器对应的控制对象信息时,用于实现:

对所述目标导入选择器进行解析,获得所述目标导入选择器对应的配置信息;根据所述配置信息,确定所述控制对象信息。

在一个实施例中,所述处理器在实现根据所述控制对象,确定所述日志调节接口之后,还用于实现:

获取应用程序中的上下文环境对象;将所述控制对象添加至所述上下文环境对象中,以更新所述上下文环境对象,所述更新所述上下文环境对象包括将所述日志调节接口添加至预设的应用程序接口列表。

在一个实施例中,所述日志级别调节请求包括类名信息与日志级别信息;所述处理器在实现根据所述日志级别调节请求,确定待进行日志级别调节的目标日志对象以及目标日志级别时,用于实现:

根据所述类名信息,确定待进行日志级别调节的所述目标日志对象;根据所述日志级别信息,确定所述目标日志级别。

在一个实施例中,所述处理器在实现根据所述类名信息,确定待进行日志级别调节的所述目标日志对象时,用于实现:

获取日志上下文环境对象;根据所述类名信息,确定所述日志上下文环境对象中的所述目标类;根据所述目标类中的日志对象,确定所述目标日志对象。

本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项日志级别调节方法。

其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字卡(securedigitalcard,sdcard),闪存卡(flashcard)等。

进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。

本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

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