CN111488230A - 修改日志输出级别的方法、装置、电子设备及存储介质 - Google Patents

修改日志输出级别的方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111488230A
CN111488230A CN201910088227.9A CN201910088227A CN111488230A CN 111488230 A CN111488230 A CN 111488230A CN 201910088227 A CN201910088227 A CN 201910088227A CN 111488230 A CN111488230 A CN 111488230A
Authority
CN
China
Prior art keywords
log
target
output level
modification
frame
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
CN201910088227.9A
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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201910088227.9A priority Critical patent/CN111488230A/zh
Publication of CN111488230A publication Critical patent/CN111488230A/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/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了修改日志输出级别的方法、装置、电子设备及存储介质。该方法包括检测到日志输出级别的修改指示,获取与当前运行的服务对应的日志框架类型;根据日志框架类型确定目标日志框架,获取目标日志框架中服务对应的日志对象;基于修改指示由日志对象中确定待修改的目标日志对象,对目标日志对象的日志输出级别进行修改,发送修改后的目标日志对象至目标日志框架,以指示目标日志框架修改与目标日志对象对应的日志对象的日志输出级别。本发明实施例通过采用上述技术方案,克服了修改不能立即生效,不能修改特定的日志对象的日志输出级别,且长期占用线程资源的缺陷。

Description

修改日志输出级别的方法、装置、电子设备及存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种修改日志输出级别的方法、装置、电子设备及存储介质。
背景技术
随着互联网技术的发展,各类线上***提供的服务越来越多样化,同时,为满足众多用户使用这些服务的需求,对线上***的性能要求也越来越高。可以通过日志记录线上***的异常情况、跟踪用户的操作路径、以及辅助研发人员排查线上问题等等,从而为研发人员优化线上***的性能提供依据。
由于日志输出会影响线上***的性能,通常会将线上***的日志输出级别设置为一个较高的级别。例如,***启动时由配置中心(存取***配置文件的在线仓库)获取配置文件,该配置文件中设置日志输出级别不小于info级别。但是,当线上***出现异常情况时,需要修改日志输出级别以输出更低级别的日志数据。可以对配置中心内的配置文件进行日志输出级别修改处理,线上***由配置中心获取修改后的配置文件,再基于该配置文件修改日志输出级别。
然而,在实现本发明过程中,发明人发现相关技术中的日志输出级别修改方案至少存在以下缺点:第一、配置文件无法立即生效,由于线上***需要从配置中心获取配置文件,触发日志输出级别修改事件,并基于配置文件修改日志输出级别,才能使配置文件生效,因此,配置文件在修改后并不能立即生效;第二、长期占用线程资源,由于需要一个线程周期性地查询配置中心内的配置文件是否有修改,导致长期占用线程资源;第三、不能修改特定日志对象的日志输出级别,由于配置文件中设置的是全局类型的日志输出级别,若对配置文件中的日志输出级别进行修改处理,修改生效会对全部日志对象的日志输出级别均进行修改。
发明内容
本发明实施例提供一种修改日志输出级别的方法、装置、电子设备及存储介质,可以克服相关技术中的修改不能立即生效,不能修改特定的日志对象的日志输出级别,且长期占用线程资源的缺陷。
第一方面,本发明实施例提供了一种修改日志输出级别的方法,包括:
检测到日志输出级别的修改指示,获取与当前运行的服务对应的日志框架类型;
根据所述日志框架类型确定目标日志框架,获取所述目标日志框架中所述服务对应的日志对象;
基于所述修改指示由所述日志对象中确定待修改的目标日志对象,对所述目标日志对象的日志输出级别进行修改,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别。
第二方面,本发明实施例还提供了一种修改日志输出级别的装置,该装置包括:
框架类型确定模块,用于检测到日志输出级别的修改指示,获取与当前运行的服务对应的日志框架类型;
日志对象获取模块,用于根据所述日志框架类型确定目标日志框架,获取所述目标日志框架中所述服务对应的日志对象;
输出级别修改模块,用于基于所述修改指示由所述日志对象中确定待修改的目标日志对象,对所述目标日志对象的日志输出级别进行修改,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的修改日志输出级别的方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的修改日志输出级别的方法。
本发明实施例通过在检测到日志输出级别的修改指示时,响应于该修改指示,以获取与当前运行的服务对应的日志框架类型,并根据日志框架类型确定当前运行的服务所使用的目标日志框架,获取目标日志框架中所述服务对应的日志对象,并基于修改指示修改该日志对象的日志输出级别,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别,实现修改立即生效的效果,并且在检测到修改指示时,占用线程资源执行日志输出级别的修改操作,避免发生长时间占用线程资源的问题;此外,本发明实施例获取了目标日志框架对应的日志对象,便于查找待修改的目标日志对象,可以对特定日志对象的日志输出级别进行修改。
附图说明
图1是本发明实施例提供的一种修改日志输出级别的方法的流程图;
图2是本发明实施例提供的一种通过静态绑定机制确定日志框架类型的方法的流程图;
图3是本申请实施例提供的一种日志操作接口的实现类图;
图4是本发明实施例提供的一种日志对象的封装方法的流程图;
图5是本发明实施例提供的一种权限认证方法的流程图;
图6是本发明实施例提供的一种修改日志输出级别的方法的流程图;
图7是本发明实施例提供的一种修改日志输出级别的装置的结构框图;
图8是本发明实施例提供的一种电子设备的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
图1是本发明实施例提供的一种修改日志输出级别的方法的流程图,该方法可以由修改日志输出级别的装置来执行,其中,该装置可以由软件和/或硬件实现,一般可集成在电子设备中。如图1所示,该方法包括:
步骤110、检测到日志输出级别的修改指示,获取与当前运行的服务对应的日志框架类型。
需要说明的是,服务可以是实现某种功能的应用程序,例如,聊天、登录***或结算等等均可以认为是服务。服务启动后,需要通过日志记录服务的运行状态,从而实现服务跟踪调试、服务状态记录以及崩溃数据恢复等功能。日志框架是记录服务运行中产生的日志并输出的工具。日志框架类型有很多种,本发明实施例并不作具体限定。以java(一门面向对象编程语言)领域为例,常用的日志框架包括slf4j(Simple Logging Facade forJava,简易java日志门面)、common-logging、lo4j1,log4j2、Logback或jdk-logging等类型。其中,slf4j是一套简易java日志门面,本身并无日志的实现,它为子***中的一组接口提供一个统一的高层接口,使得子***更容易使用。common-logging是一套基于java的日志接口,它为子***中的一组接口提供一个统一的高层接口,使得子***更容易使用。lo4j1是一个基于java的日志记录工具,是具体的日志实现方案,由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。log4j2是lo4j1的升级产品。Logback是由是由log4j创始人设计的另一个开源日志组件。jdk-logging也是一个基于java的日志记录工具。
需要说明的是,日志框架至少包括日志记录模块和日志输出模块,其中,日志记录模块用于创建和管理日记对象。日志输出级别是日志对象的一个属性,由于日志对象用于获取日志并输出高于日志输出级别的目标日志给日志输出模块,可以通过修改日志输出级别的方式改变记录有日志信息的日志的输出量。
在服务启动或者运行过程中,如果某个程序需要输出日志(即执行print指令,也可以称为打印日志),就需要从日志框架中获取一个日志对象(如Logger类型的对象),则该程序向日志框架发送日志对象获取请求,以利用获取到的日志对象来输出日志。可以理解的是,该服务中有多少个需要输出日志的程序,就需要创建相同数量的日志对象。日志框架基于该日志对象获取请求,通过日志记录模块创建(或称为实例化)该程序对应的日志对象。为了区分开不同的日志对象,可以使用该发送日志对象获取请求的程序的全限定名(包名+类名)来命名为其创建的日志对象。其中,包名是用以标识应用程序的字符,类名是用以标识服务中的某个程序的字符。例如,类名是com.a.test.TestLog程序需要输出日志,则创建一个名称为com.a.test.TestLog的日志对象。也就是说,每个日志对象分别对应一个使用该日志对象的程序,且该日志对象的名称就是该程序的全限定名。可选的,为了提高资源利用率避免频繁的初始化,日志框架将已经初始化过的日志对象存储于该日志框架的上下文中。当同一个程序再次向日志框架发送日志对象获取请求时,日志框架会返回已经初始化过的日志对象,从而,避免再次对该程序对应的日志对象执行初始化。
本发明实施例中,将实现日志输出级别的修改功能的软件开发工具包添加至待发布的服务的设定目录下,以将实现日志输出级别修改功能的应用程序设置到服务中,具有便于复用且对服务的原始代码实现零侵入的特点,避免破坏服务中代码的完整性的问题发生。在发布后即启动,并在后台运行以实时准备响应用户请求。在服务启动时,触发在设定目录下的软件开发工具包内的程序代码被执行,即该实现日志输出级别修改功能的应用程序也被启动。
在检测到日志输出级别的修改指示时,实现日志输出级别修改功能的应用程序通过静态绑定机制识别出当前运行的服务对应的日志框架。其中,可以通过设定页面或者命令行的方式向研发人员提供日志输出级别的修改渠道。需要说明的是,通过静态绑定机制识别当前运行的服务的实现方式有很多种,本发明实施例并不作具体限定。例如,在服务的设定页面中显示设定修改键和退出键,当该设定修改键被按下时,当前运行的服务展示设定页面,以供用户输入日志输出级别的修改指示。当前运行的服务通过设定接口将该设定页面的URL(Uniform Resource Locator、统一资源定位符)传输给实现日志输出级别修改功能的应用程序。该应用程序访问URL获取用户输入的修改指示。该实现日志输出级别修改功能的应用程序由当前运行的服务的设定目录中获取与所述当前运行的服务对应的日志框架类型。其中,设定目录可以是服务的部署目录下的lib目录,即在检测到日志输出级别的修改指示时,实现日志输出级别修改功能的应用程序扫描该部署目录下的lib目录,以确定当前运行的服务所使用的日志框架的类型。又如,由于服务在启动过程中会预加载日志框架的实现类,基于实现类可以确定当前启动的服务使用的是哪种类型的日志框架。该实现日志输出级别修改功能的应用程序可以监听服务的启动过程,获取该实现类的属性信息。在检测到研发人员通过命令行方式输入的日志输出级别的修改指示时,就可以根据当前运行的服务在启动过程中加载的日志框架实现类确定与该服务对应的日志框架类型。在检测到日志输出级别的修改指示时,该实现日志输出级别修改功能的应用程序可以根据所获取的服务在启动过程中加载的日志框架实现类的属性信息确定当前运行的服务所使用的日志框架类型。
步骤120、根据所述日志框架类型确定目标日志框架,获取所述目标日志框架中所述服务对应的日志对象。
示例性的,根据日志框架类型可以确定当前运行的服务所使用的目标日志框架。基于已确定的目标日志框架,由目标日志框架的上下文获取该当前运行的服务已经实例化的所有日志对象。其中,日志上下文记录针对当前运行的服务已初始化过的日志对象。
图2是本发明实施例提供的一种通过静态绑定机制确定日志框架类型的方法的流程图。如图2所示,该方法包括如下步骤:
步骤1201、获取日志输出级别的修改指示。
步骤1202、通过静态绑定机制确定当前运行的服务所使用的日志框架的类型。
步骤1203、根据日志框架的类型判断所述服务所使用的日志框架是否是lo4j1,若是,执行步骤1204,否则执行步骤1205。
步骤1204、确定所述使用的目标日志框架是lo4j1,执行步骤1212。
步骤1205、根据日志框架的类型判断所述服务所使用的日志框架是否是lo4j2,若是,执行步骤1206,否则执行步骤1207。
步骤1206、确定所述服务使用的目标日志框架是lo4j2,执行步骤1212。
步骤1207、根据日志框架的类型判断所述服务所使用的日志框架是否是Logback,若是,执行步骤1208,否则执行步骤1209。
步骤1208、确定所述服务使用的目标日志框架是Logback,执行步骤1212。
步骤1209、根据日志框架的类型判断所述服务所使用的日志框架是否是common-logging,若是,则执行步骤1210,否则执行步骤1211。
步骤1210、确定所述服务使用的目标日志框架是common-logging,执行步骤1212。
步骤1211、确定所述服务使用的目标日志框架是其它日志框架,执行步骤1212。
步骤1212、获取所述目标日志框架的上下文。
步骤1213、基于所述目标日志框架的上下文获取当前运行的服务中已实例化的所有日志对象。
示例性的,从目标日志框架的上下文中取出当前服务中实例化的所有日志对象,对取出的所述日志对象进行封装处理,存储封装后的日志对象。这样设计可以屏蔽不同日志框架在实现方式上的差异,实现外界***通过统一的日志操作接口可以操作不同日志框架下的日志对象的效果。
需要说明的是,对日志对象进行封装可以使来自不同日志框架下的日志对象具有相同属性和方法。日志对象封装后的类型是用于展示日志对象的类型,以java领域为例,由于是将日志对象封装成用于展示的日志对象类型,可以命名为LogVo,表示待封装的对象是与日志相关,且封装后的类型是Value Object(简称为Vo)类型,即该封装的对象将logger类型的日志对象封装成用LogVo类型的日志对象。
步骤130、基于所述修改指示由所述日志对象中确定待修改的目标日志对象,对所述目标日志对象的日志输出级别进行修改,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别。
需要说明的是,修改指示至少包括待修改日志输出级别的目标日志对像的标识信息以及目标输出级别。
需要说明的是,目标日志框架修改与所述目标日志对象对应的日志对象是指在目标日志框架中名称与目标日志对象相同的日志对象。
示例性的,调用与上述目标日志框架对应的日志操作接口,以解析修改指示,基于解析结果确定待修改日志输出级别的目标日志对象以及目标输出级别,根据目标日志对象的标识信息由已封装的日志对象中查找目标日志对象,基于目标输出级别更新目标日志对象的日志输出级别。
其中,日志操作接口是将对日志对象的常见操作抽象出来,并基于该常见操作定义的接口。可以在制作软件开发工具包的过程中,将操作日志对象的常见方法(或称为函数)抽象出来,并通过接口来声明这些方法。这里的接口可以被命名为LogOperateInterface。这样设计符合面向接口的编程要求,提高了软件开发工具包对应的应用程序的兼容性性和可扩展性。需要说明的是,在接口定义的过程中,可以根据实际需要抽取不同的日志操作方法,本发明实施例并不作具体限定。例如,可以通过接口声明查询、修改、分页及清除等方法。其中,查询方法用于查找某个特定的日志对象,修改方法用于修改某个日志对象的日志输出级别,分页方法用于分页显示服务中实例化的日志对象,清除方法用于清除修改日志输出级别的操作所占用的资源。
需要说明的是,不同的日志框架有不同的操作方法,即不同的日志框架对日志对象的操作方法不同,因此,需要分别为每个日志框架定义日志操作接口。也就是说,目前有多少日志框架,就需要实现几个日志操作接口,将日志操作接口的实现代码打包至软件开发工具包中。图3是本申请实施例提供的一种日志操作接口的实现类图。如图3所示,为每个日志框架均定义了LogOperateInterface的实现类。
示例性的,在确定与当前运行的服务对应的日志框架类型后,根据该日志框架类型确定待加载的日志操作接口。其中,日志操作接口用于接收日志修改指示并执行。由于日志对象的命名是使用该日志对象的程序的全限定名,可以基于日志框架中日志对象的命名确定类名,基于该类名与接口具体实现类的名称进行匹配,若类名相同,则得到待加载的日志操作接口。通过上述与目标日志框架对应的日志操作接口解析修改指示,基于解析结果确定待修改日志输出级别的目标日志对象和目标输出级别。获取已封装的日志对象,从中筛选出待修改日志输出级别的目标日志对象,通过日志操作接口基于目标输出级别更新该目标日志对象的日志输出级别,通过日志操作接口向对应的目标日志框架传输级别修改后的目标日志对象,通过目标日志框架,基于目标日志对象的日志输出级别更新该目标日志框架内的相应地日志对象的日志输出级别。
本发明实施例的技术方案,通过在检测到日志输出级别的修改指示时,响应于该修改指示,以获取与当前运行的服务对应的日志框架类型,并根据日志框架类型确定当前运行的服务所使用的目标日志框架,获取目标日志框架中所述服务对应的日志对象,并基于修改指示修改该日志对象的日志输出级别,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别,实现修改立即生效的效果,并且在检测到修改指示时,占用线程资源执行日志输出级别的修改操作,避免发生长时间占用线程资源的问题;此外,本发明实施例获取了目标日志框架对应的日志对象,便于查找待修改的目标日志对象,可以对特定日志对象的日志输出级别进行修改。
在上述技术方案的基础上,存储封装后的所述日志对象可以采用如下方式实现:以封装后的日志对象的名称作为键,通过哈希表存储封装后的日志对象。图4是本发明实施例提供的一种日志对象的封装方法的流程图。如图4所示,该方法包括:
步骤410、获取当前运行的服务实例化的全部日志对象。
例如,日志对象的类型可以是Logger类型。
步骤420、封装所获取的日志对象。
示例性的,将Logger类型的日志对象转换为LogVo类型的日志对象。
步骤430、以封装后的日志对象的名称作为键,通过哈希表存储封装后的日志对象。
示例性的,以LogVo类型的日志对象的名称作为键,值是LogVo类型的日志对象,采用键值对的形式将日志对象存储于哈希表(即HashMap)中。
这样设置的好处在于通过将封装后的日志对象存入哈希表的方式,可以提高日志对象的搜索效率,便于对日志对象进行分页处理,同时还可以有效地去重。
在上述技术方案的基础上,在检测到日志输出级别的修改指示之后,进一步增加了输出进行身份认证操作的提示信息;获取用户输入的身份认证信息,根据所述身份认证信息判断所述用户是否具有日志输出级别的修改权限;若是,则执行获取与当前运行的服务对应的日志框架类型的操作。否则,引导用户输入身份认证信息,再次验证所述身份认证信息,基于身份认证信息的验证结果判断是否拦截所述修改指示。图5是本发明实施例提供的一种权限认证方法的流程图。如图5所示,该方法包括:
步骤510、获取用户发送的日志输出级别的修改指示。
步骤520、输出进行身份认证操作的提示信息。
步骤530、获取用户输入的身份认证信息,根据所述身份认证信息判断所述用户是否具有日志输出级别的修改权限,若是,则执行步骤540,否则执行步骤550。
其中,身份认证信息可以包括用户名和密码。将用户输入的用户名和密码与预先存储的标准认证信息进行比对,根据比对结果判断该用户是否具有日志输出级别的修改权限。
步骤540、获取与当前运行的服务对应的日志框架类型。
步骤550、输出引导用户输入身份认证信息的提示信息。
步骤560、判断设定时间内,所述用户是否通过认证,若是,则执行步骤540,否则执行步骤570。
步骤570、拦截所述修改指示,以放弃执行所述修改指示对应的修改操作。
这样设置的好处在于通过在用户发送的日志输出级别的修改指示后增加身份验证步骤,实现权限控制,防止发生因恶意用户修改日志对象的属性而影响***正常工作的问题。
在上述技术方案的基础上,在对所述目标日志对象的日志输出级别进行修改之后,进一步增加了在检测到结果显示事件被触发时,调用结果显示接口输出修改结果。示例性的,为不同类型的服务提供不同的命令发布渠道,以供用户发布日志输出级别的修改指示。其中,类型包括但不限于JAVAEE和AVASE。JAVAEE主要用来做企业开发,比如我们常见的网站。JAVASE主要用来做桌面应用程序开发。对于通过JAVAEE技术实现的服务,基于Servlet技术提供html页面,用户通过点击html页面的表单(表单在网页中主要负责数据采集功能)来输入修改特定日志对象的日志输出级别的修改指示。其中,Servlet是用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。对于通过JAVASE技术实现的服务,通过命令行的方式提供操作接口,用户通过命令行输入修改特定日志对象的日志输出级别的修改指示。示例性的,检测到完成对目标日志对象的日志输出级别的修改操作时,触发结果显示事件。在检测到结果显示事件被触发时,调用结果显示接口输出修改结果至所述html页面或命令行。这样设置的好处在于便于及时显示修改结果,使用户能及时看见日志输出级别的修改结果,避免发生修改后无法直接观察修改效果,需要查看服务日志才能得知修改效果的问题
图6是本发明实施例提供的一种修改日志输出级别的方法的流程图,该方法包括:
步骤601、获取日志输出级别的修改指示。
示例性的,对于通过JAVAEE技术实现的服务,当前运行的服务在检测到设定修改键的状态发生变化时,通过设定接口通知实现日志输出级别修改功能的应用程序存在日志输出级别修改指示。该应用程序获取预先存储的URL链接,基于该URL链接获取相应的页面提交的表单数据,该表单数据中包含日志输出级别的修改指示的相关信息。
对于通过JAVASE技术实现的服务,通过命令行操作接口获取日志输出级别的修改指示。
步骤602、输出进行身份认证操作的提示信息。
步骤603、获取用户输入的身份认证信息,根据所述身份认证信息判断所述用户是否具有日志输出级别的修改权限,若是,则执行步骤604,否则,执行步骤611。
步骤604、获取与当前运行的服务对应的日志框架类型。
示例性的,在检测到日志输出级别的修改指示之后,创建级别修改线程,以基于该级别修改线程执行步骤605至608的操作。
步骤605、根据所述日志框架类型确定目标日志框架,获取所述目标日志框架中所述服务对应的日志对象。
步骤606、对所述日志对象进行封装,以封装后的日志对象的名称作为键,通过哈希表存储封装后的日志对象。
步骤607、调用与所述目标日志框架对应的日志操作接口,以解析所述修改指示,基于解析结果确定待修改日志输出级别的目标日志对象以及目标输出级别,由已封装的日志对象中查找所述目标日志对象,基于所述目标输出级别更新所述目标日志对象的日志输出级别。
需要说明的是,日志输出级别通常包括debug、info、warn、Error和Fatal,其等级由低至高的顺序是debug<info<warn<Error<Fatal。若日志输出级别是debug,则响应日志输出指令时,日志输出级别高于debug的info、warn、Error和Fatal等级的日志也能被输出。其中,debug(错误)的级别最低,主要在开发调试阶段使用,任何高于debug级别的日志都会被打印出来。Info(重要),主要用在***上线后,用来显示***的执行状态,高于info级别的日志信息都会被打印出来。后三个,警告、错误、严重错误,这三者应该都在***运行时检测到了一个不正常的状态。Warn(警告)表示可修复,***可继续运行下去;高于warn级别的日志信息都会被打印。Error(错误)表示可修复性,但无法确定***会正常的工作下去;会输出高于Error级别的日志信息。Fatal(严重错误)表示相当严重,可以肯定这种错误已经无法修复,并且如果***继续运行下去的话后果严重。
步骤608、通过所述日志操作接口发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架根据所述目标日志对象的日志输出级别修改与所述目标日志对象对应的日志对象的日志输出级别。
步骤609、在检测到结果显示事件被触发时,调用结果显示接口输出修改结果。
例如,当前运行的服务可以通过html页面显示修改结果,修改结果包括但不限于修改成功或修改失败,以供用户直接了解修改效果。又如,当前运行的服务通过命令行显示修改结果。
步骤610、在检测到清除资源指示时,结束所述级别修改线程。
在检测到清除资源指示时,结束该级别修改线程,以释放修改日志输出级别时占用的线程资源,节省了内存空间。
步骤611、输出引导用户输入身份认证信息的提示信息。
步骤613、判断设定时间内用户是否通过身份认证,若是,则执行步骤604,否则执行步骤613。
步骤612、拦截所述修改指示,以放弃执行所述修改指示对应的修改操作。
本发明实施例的技术方案,通过在检测到日志输出级别的修改指示时,进行身份认证,防止发生因恶意用户修改日志对象的属性而影响***正常工作的问题;若身份认证通过,则响应于该修改指示,以获取与当前运行的服务对应的日志框架类型,并根据日志框架类型确定当前运行的服务所使用的目标日志框架,获取目标日志框架中所述服务对应的日志对象,封装该日志对象,以屏蔽不同日志框架间的实现差异,并基于修改指示修改封装后的日志对象的日志输出级别,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别,实现修改立即生效的效果,并且在检测到修改指示时,占用线程资源执行日志输出级别的修改操作,在修改完成后释放线程资源,避免发生长时间占用线程资源的问题;此外,本发明实施例获取了目标日志框架对应的日志对象,便于查找待修改的目标日志对象,可以对特定日志对象的日志输出级别进行修改;由于无需由配置中心获取配置文件,还避免了长时间占用服务器带宽的问题发生。
在一些实施例中,还可以将服务实例化的日志对象全部存储于配置文件中,当需要修改特定日志对象的日志输出级别时,日志框架获取修改后的配置文件,基于配置文件修改日志对象的日志输出级别。
图7是本发明实施例提供的一种修改日志输出级别的装置的结构框图,该装置可由软件和/或硬件实现,一般集成在电子设备中,可通过执行修改日志输出级别的方法动态修改日志对象的日志输出级别。如图7所示,该装置包括:
框架类型确定模块710,用于检测到日志输出级别的修改指示,获取与当前运行的服务对应的日志框架类型;
日志对象获取模块720,用于根据所述日志框架类型确定目标日志框架,获取所述目标日志框架中所述服务对应的日志对象;
输出级别修改模块730,用于基于所述修改指示由所述日志对象中确定待修改的目标日志对象,对所述目标日志对象的日志输出级别进行修改,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别。
本发明实施例提供的修改日志输出级别的装置,通过在检测到日志输出级别的修改指示时,响应于该修改指示,以获取与当前运行的服务对应的日志框架类型,并根据日志框架类型确定当前运行的服务所使用的目标日志框架,获取目标日志框架中所述服务对应的日志对象,并基于修改指示修改该日志对象的日志输出级别,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别,实现修改立即生效的效果,并且在检测到修改指示时,占用线程资源执行日志输出级别的修改操作,避免发生长时间占用线程资源的问题;此外,本发明实施例获取了目标日志框架对应的日志对象,便于查找待修改的目标日志对象,可以对特定日志对象的日志输出级别进行修改。
可选的,框架类型确定模块710具体用于:
在检测到日志输出级别的修改指示时,由当前运行的服务的设定目录中获取与所述当前运行的服务对应的日志框架类型。
可选的,框架类型确定模块710具体用于:
在检测到日志输出级别的修改指示时,根据当前运行的服务在启动过程中加载的日志框架实现类确定与所述服务对应的日志框架类型。
可选的,还包括:
封装模块,用于在获取所述目标日志框架中所述服务对应的日志对象之后,对所述日志对象进行封装,存储封装后的所述日志对象;
以及,输出级别修改模块730具体用于:
调用与所述目标日志框架对应的日志操作接口,以解析所述修改指示,基于解析结果确定待修改日志输出级别的目标日志对象以及目标输出级别,由已封装的日志对象中查找所述目标日志对象,基于所述目标输出级别更新所述目标日志对象的日志输出级别。
可选的,封装模块具体用于:
以封装后的日志对象的名称作为键,通过哈希表存储封装后的日志对象。
可选的,还包括:
身份认证模块,用于在检测到日志输出级别的修改指示之后,输出进行身份认证操作的提示信息;获取用户输入的身份认证信息,根据所述身份认证信息判断所述用户是否具有日志输出级别的修改权限;若是,则执行获取与当前运行的服务对应的日志框架类型的操作。
可选的,还包括:
结果输出模块,用于在检测到结果显示事件被触发时,调用结果显示接口输出修改结果。
可选的,还包括:
线程创建模块,用于在检测到日志输出级别的修改指示之后,创建级别修改线程,以获取与当前运行的服务对应的日志框架类型,根据所述日志框架类型确定目标日志框架,获取所述目标日志框架中所述服务对应的日志对象,基于所述修改指示由所述日志对象中确定待修改的目标日志对象,对所述目标日志对象的日志输出级别进行修改,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别;
线程结束模块,用于在检测到清除资源指示时,结束所述级别修改线程。
本发明实施例还提供了一种电子设备,该电子设备中可集成本发明实施例提供的修改日志输出级别的装置。图8是本发明实施例提供的一种电子设备的结构框图。电子设备可以包括存储器810、处理器820及存储在存储器810上并可在处理器820运行的计算机程序,该处理器820执行该计算机程序时实现如本发明实施例所述的修改日志输出级别的方法。
本发明实施例中提供的电子设备,通过在检测到日志输出级别的修改指示时,响应于该修改指示,以获取与当前运行的服务对应的日志框架类型,并根据日志框架类型确定当前运行的服务所使用的目标日志框架,获取目标日志框架中所述服务对应的日志对象,并基于修改指示修改该日志对象的日志输出级别,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别,实现修改立即生效的效果,并且在检测到修改指示时,占用线程资源执行日志输出级别的修改操作,避免发生长时间占用线程资源的问题;此外,本发明实施例获取了目标日志框架对应的日志对象,便于查找待修改的目标日志对象,可以对特定日志对象的日志输出级别进行修改。
本发明实施例还提供了一种包含计算机可执行指令的存储机制,所述计算机可执行指令在由计算机处理器执行时用于执行修改日志输出级别的方法,该方法包括:
检测到日志输出级别的修改指示,获取与当前运行的服务对应的日志框架类型;
根据所述日志框架类型确定目标日志框架,获取所述目标日志框架中所述服务对应的日志对象;
基于所述修改指示由所述日志对象中确定待修改的目标日志对象,对所述目标日志对象的日志输出级别进行修改,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的修改日志输出级别的操作,还可以执行本发明任意实施例所提供的修改日志输出级别的方法中的相关操作。
需要说明的是,存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机***存储器或随机存取存储器,诸如DRAM、DDRRAM、SRAM、EDORAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机***中,或者可以位于不同的第二计算机***中,第二计算机***通过网络(诸如因特网)连接到第一计算机***。第二计算机***可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机***中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
上述实施例中提供的修改日志输出级别的装置、存储介质、电子设备可执行本发明任意实施例所提供的修改日志输出级别的方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的修改日志输出级别的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (11)

1.一种修改日志输出级别的方法,其特征在于,包括:
检测到日志输出级别的修改指示,获取与当前运行的服务对应的日志框架类型;
根据所述日志框架类型确定目标日志框架,获取所述目标日志框架中所述服务对应的日志对象;
基于所述修改指示由所述日志对象中确定待修改的目标日志对象,对所述目标日志对象的日志输出级别进行修改,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别。
2.根据权利要求1所述的方法,其特征在于,检测到日志输出级别的修改指示,获取与当前运行的服务对应的日志框架类型,包括:
在检测到日志输出级别的修改指示时,由当前运行的服务的设定目录中获取与所述当前运行的服务对应的日志框架类型。
3.根据权利要求1所述的方法,其特征在于,检测到日志输出级别的修改指示,获取与当前运行的服务对应的日志框架类型,包括:
在检测到日志输出级别的修改指示时,根据当前运行的服务在启动过程中加载的日志框架实现类确定与所述服务对应的日志框架类型。
4.根据权利要求1所述的方法,其特征在于,在获取所述目标日志框架中所述服务对应的日志对象之后,还包括:
对所述日志对象进行封装,存储封装后的所述日志对象;
以及,基于所述修改指示由所述日志对象中确定待修改的目标日志对象,对所述目标日志对象的日志输出级别进行修改,包括:
调用与所述目标日志框架对应的日志操作接口,以解析所述修改指示,基于解析结果确定待修改日志输出级别的目标日志对象以及目标输出级别,由已封装的日志对象中查找所述目标日志对象,基于所述目标输出级别更新所述目标日志对象的日志输出级别。
5.根据权利要求4所述的方法,其特征在于,存储封装后的所述日志对象,包括:
以封装后的日志对象的名称作为键,通过哈希表存储封装后的日志对象。
6.根据权利要求1所述的方法,其特征在于,在检测到日志输出级别的修改指示之后,还包括:
输出进行身份认证操作的提示信息;
获取用户输入的身份认证信息,根据所述身份认证信息判断所述用户是否具有日志输出级别的修改权限;
若是,则执行获取与当前运行的服务对应的日志框架类型的操作。
7.根据权利要求1所述的方法,其特征在于,还包括:
在检测到结果显示事件被触发时,调用结果显示接口输出修改结果。
8.根据权利要求1-7中任一项所述的方法,其特征在于,还包括:
在检测到日志输出级别的修改指示时,创建级别修改线程,以获取与当前运行的服务对应的日志框架类型,根据所述日志框架类型确定目标日志框架,获取所述目标日志框架中所述服务对应的日志对象,基于所述修改指示由所述日志对象中确定待修改的目标日志对象,对所述目标日志对象的日志输出级别进行修改,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别;
在检测到清除资源指示时,结束所述级别修改线程。
9.一种修改日志输出级别的装置,其特征在于,包括:
框架类型确定模块,用于检测到日志输出级别的修改指示,获取与当前运行的服务对应的日志框架类型;
日志对象获取模块,用于根据所述日志框架类型确定目标日志框架,获取所述目标日志框架中所述服务对应的日志对象;
输出级别修改模块,用于基于所述修改指示由所述日志对象中确定待修改的目标日志对象,对所述目标日志对象的日志输出级别进行修改,发送修改后的目标日志对象至所述目标日志框架,以指示所述目标日志框架修改与所述目标日志对象对应的日志对象的日志输出级别。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-8中任一所述的修改日志输出级别的方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8中任一所述的修改日志输出级别的方法。
CN201910088227.9A 2019-01-29 2019-01-29 修改日志输出级别的方法、装置、电子设备及存储介质 Pending CN111488230A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910088227.9A CN111488230A (zh) 2019-01-29 2019-01-29 修改日志输出级别的方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910088227.9A CN111488230A (zh) 2019-01-29 2019-01-29 修改日志输出级别的方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN111488230A true CN111488230A (zh) 2020-08-04

Family

ID=71812223

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910088227.9A Pending CN111488230A (zh) 2019-01-29 2019-01-29 修改日志输出级别的方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111488230A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111966643A (zh) * 2020-09-18 2020-11-20 成都精灵云科技有限公司 根据log资源动态调整日志等级的***及其方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105843822A (zh) * 2015-01-16 2016-08-10 北京神州泰岳软件股份有限公司 一种修改日志级别的方法和装置
CN108897659A (zh) * 2018-06-06 2018-11-27 腾讯音乐娱乐科技(深圳)有限公司 修改日志级别的方法、装置及存储介质
CN109032881A (zh) * 2017-06-09 2018-12-18 武汉斗鱼网络科技有限公司 一种日志级别动态调整方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105843822A (zh) * 2015-01-16 2016-08-10 北京神州泰岳软件股份有限公司 一种修改日志级别的方法和装置
CN109032881A (zh) * 2017-06-09 2018-12-18 武汉斗鱼网络科技有限公司 一种日志级别动态调整方法及装置
CN108897659A (zh) * 2018-06-06 2018-11-27 腾讯音乐娱乐科技(深圳)有限公司 修改日志级别的方法、装置及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111966643A (zh) * 2020-09-18 2020-11-20 成都精灵云科技有限公司 根据log资源动态调整日志等级的***及其方法
CN111966643B (zh) * 2020-09-18 2023-05-05 成都精灵云科技有限公司 根据log资源动态调整日志等级的***及其方法

Similar Documents

Publication Publication Date Title
US7689665B2 (en) Dynamically loading scripts
US11392461B2 (en) Method and apparatus for processing information
US9129058B2 (en) Application monitoring through continuous record and replay
US9411616B2 (en) Classloader/instrumentation approach for invoking non-bound libraries
US20150378864A1 (en) Systems and methods for instrumenting applications for performance monitoring
US10587641B2 (en) Point-wise protection of application using runtime agent and dynamic security analysis
KR101691245B1 (ko) 웹 서비스 모니터링 시스템 및 방법
US20040103394A1 (en) Mechanism for testing execution of applets with plug-ins and applications
US20110258609A1 (en) Method and system for software defect reporting
US8881296B2 (en) Marking and obscuring sensitive values in traces
US20070198705A1 (en) System and method for integrating resources in a network
US10084637B2 (en) Automatic task tracking
CN108038039B (zh) 记录日志的方法及微服务***
CN112035354B (zh) 风险代码的定位方法、装置、设备及存储介质
CN112596932A (zh) 服务注册及拦截方法、装置、电子设备及可读存储介质
US9026612B2 (en) Generating a custom parameter rule based on a comparison of a run-time value to a request URL
CN114116078A (zh) 基于微前端的应用数据处理方法、装置、设备及介质
US10216620B2 (en) Static code testing of active code
CN114006891A (zh) 信息的上报方法、装置、设备及存储介质
CN110764962A (zh) 日志处理方法和装置
CN111488230A (zh) 修改日志输出级别的方法、装置、电子设备及存储介质
CN114756435A (zh) 日志读取方法、服务器、计算机设备和存储介质
CN114510398A (zh) 异常监测方法、装置、设备、***和介质
CN112506781A (zh) 测试监控方法、装置、电子设备、存储介质及程序产品
US11960560B1 (en) Methods for analyzing recurring accessibility issues with dynamic web site behavior and devices thereof

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