CN111435327B - 一种日志记录的处理方法、装置及系统 - Google Patents

一种日志记录的处理方法、装置及系统 Download PDF

Info

Publication number
CN111435327B
CN111435327B CN201910038094.4A CN201910038094A CN111435327B CN 111435327 B CN111435327 B CN 111435327B CN 201910038094 A CN201910038094 A CN 201910038094A CN 111435327 B CN111435327 B CN 111435327B
Authority
CN
China
Prior art keywords
log
grade
service request
variable
service
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.)
Active
Application number
CN201910038094.4A
Other languages
English (en)
Other versions
CN111435327A (zh
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.)
Cainiao Smart Logistics Holding Ltd
Original Assignee
Cainiao Smart Logistics Holding 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 Cainiao Smart Logistics Holding Ltd filed Critical Cainiao Smart Logistics Holding Ltd
Priority to CN201910038094.4A priority Critical patent/CN111435327B/zh
Publication of CN111435327A publication Critical patent/CN111435327A/zh
Application granted granted Critical
Publication of CN111435327B publication Critical patent/CN111435327B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种日志记录的处理方法、装置及系统。其中,所述方法包括:读取与业务请求对应的实时修改业务日志等级的等级变量;针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录。采用本申请提供的方法,解决了现有技术中应用系统必须重新启动才能够调整日志等级的问题。

Description

一种日志记录的处理方法、装置及系统
技术领域
本申请涉及数据处理领域,具体涉及一种日志记录的处理方法、装置及系统。
背景技术
在大型的应用系统中,通常使用日志记录来记录应用系统工作情况。在应用系统中,记录了很多的Debug和Info级别的日志用来排查问题。在应用上线后,为了性能考虑一般会把日志级别调整为Wam或者Error,用来避免海量的日志记录。但是,如果应用系统出现问题并需要Debug和Info级别的日志协助排查时,就无法实时的调整日志等级来协助排查问题。现有技术只能记录某个业务逻辑的日志,例如,如果有100万个请求就对应记录100万次。海量的日志会带来很大的问题排查成本。
而且,传统的日志等级修改一般是暂停应用,改写日志等级配置项再重启应用。等排查完问题之后再暂停应用,把日志等级配置项改回去再重启应用,整个流程非常耗时。
发明内容
本申请提供一种日志记录的处理方法、装置及系统,以解决现有技术中,应用系统必须重新启动才能够调整日志等级的问题。
本申请提供一种日志记录的处理方法,包括:
读取与业务请求对应的实时修改业务日志等级的等级变量;
针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;
若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录。
可选的,所述日志记录的处理方法,还包括:
若所述等级变量不包含所述日志等级信息,则根据系统配置信息获得配置的日志等级;
按照所述配置的日志等级,输出所述业务请求对应的业务逻辑的日志记录。
可选的,所述读取与业务请求对应的实时修改业务日志等级的等级变量,包括:
在根据用户的业务请求执行所述业务请求对应的业务逻辑前,读取与业务请求对应的实时修改业务日志等级的等级变量。
可选的,所述日志记录的处理方法,还包括:
在退出所述业务请求对应的业务逻辑前,将所述等级变量清除;
在将所述等级变量清除之后,根据系统配置信息获得配置的日志等级;
按照所述配置的日志等级,输出所述业务请求对应的业务逻辑的日志记录。
可选的,所述读取与业务请求对应的实时修改业务日志等级的等级变量,包括:
读取与业务请求对应的实时修改业务日志等级的映射调试上下文变量。
可选的,以所述业务请求的标识为索引,读取与业务请求对应的所述等级变量并针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息。
可选的,以所述业务请求的标识为索引检索日志等级信息,根据所述检索的结果判断所述等级变量是否包含日志等级信息。
可选的,所述针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息,包括:
针对所述等级变量进行分析,判断所述等级变量是否包含严重等级、错误等级、警告等级、信息等级、调试等级中的一种。
可选的,所述按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录,包括:
按照所述日志等级信息,获得严重等级、错误等级、警告等级、信息等级、调试等级中的一种日志等级;
按照所述日志等级,输出所述业务请求对应的业务逻辑的日志记录。
可选的,所述按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录,包括:
按照所述日志等级信息,输出所述业务请求对应的业务逻辑的业务日志、性能日志、调用链日志中的至少一种。
本申请提供一种日志记录的处理装置,包括:
变量读取单元,用于读取与业务请求对应的实时修改业务日志等级的等级变量;
变量分析单元,用于针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;
日志输出单元,用于若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录。
可选的,所述日志记录的处理装置,还包括配置等级日志输出单元,所述配置等级日志输出单元用于:
若所述等级变量不包含所述日志等级信息,则根据系统配置信息获得配置的日志等级;
按照所述配置的日志等级,输出所述业务请求对应的业务逻辑的日志记录。
可选的,所述变量读取单元,具体用于:
在根据用户的业务请求执行所述业务请求对应的业务逻辑前,读取与业务请求对应的实时修改业务日志等级的等级变量。
可选的,所述日志记录的处理装置,还包括等级变量清除单元,所述等级变量清除单元用于:
在退出所述业务请求对应的业务逻辑前,将所述等级变量清除;
在将所述等级变量清除之后,根据系统配置信息获得配置的日志等级;
按照所述配置的日志等级,输出所述业务请求对应的业务逻辑的日志记录。
可选的,所述变量读取单元,具体用于:
读取与业务请求对应的实时修改业务日志等级的映射调试上下文变量。
可选的,所述变量读取单元,具体用于:
以所述业务请求的标识为索引,读取与业务请求对应的所述等级变量并针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息。
可选的,所述变量读取单元,具体用于:
以所述业务请求的标识为索引检索日志等级信息,根据所述检索的结果判断所述等级变量是否包含日志等级信息。
可选的,所述变量分析单元,具体用于:
针对所述等级变量进行分析,判断所述等级变量是否包含严重等级、错误等级、警告等级、信息等级、调试等级中的一种。
可选的,所述日志输出单元,具体用于:
按照所述日志等级信息,获得严重等级、错误等级、警告等级、信息等级、调试等级中的一种日志等级;
按照所述日志等级,输出所述业务请求对应的业务逻辑的日志记录。
可选的,所述日志输出单元,具体用于:
按照所述日志等级信息,输出所述业务请求对应的业务逻辑的业务日志、性能日志、调用链日志中的至少一种。
本申请提供一种电子设备,所述电子设备包括:
处理器;
存储器,用于存储程序,所述程序在被所述处理器读取执行时,执行如下操作:
读取与业务请求对应的实时修改业务日志等级的等级变量;
针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;
若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录。
本申请提供一种计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行时,实现以下步骤:
读取与业务请求对应的实时修改业务日志等级的等级变量;
针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;
若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录。
本申请提供一种日志记录的处理方法,包括:
获取针对应用系统的业务请求;
针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;
若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级。
可选的,所述针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息,包括:
分析所述业务请求中是否包含严重等级、错误等级、警告等级、信息等级、调试等级中的一种;
若是,则判断所述业务请求包含日志等级信息;
若否,则判断所述业务请求不包含日志等级信息。
可选的,所述日志等级信息包括严重等级、错误等级、警告等级、信息等级、调试等级。可选的,所述将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级,包括:
将与所述业务请求对应的实时修改业务日志等级的映射调试上下文修改为所述业务请求中包含的日志等级。
本申请提供一种日志记录的处理装置,包括:
请求获取单元,用于获取针对应用系统的业务请求;
请求分析单元,用于针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;
等级修改单元,用于若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级。
可选的,所述请求分析单元,具体用于:
分析所述业务请求中是否包含严重等级、错误等级、警告等级、信息等级、调试等级中的一种;
若是,则判断所述业务请求包含日志等级信息;
若否,则判断所述业务请求不包含日志等级信息。
可选的,所述日志等级信息包括严重等级、错误等级、警告等级、信息等级、调试等级。
可选的,所述等级修改单元,具体用于:
将与所述业务请求对应的实时修改业务日志等级的映射调试上下文修改为所述业务请求中包含的日志等级。
本申请提供一种电子设备,所述电子设备包括:
处理器;
存储器,用于存储程序,所述程序在被所述处理器读取执行时,执行如下操作:
获取针对应用系统的业务请求;
针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;
若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级。
本申请提供一种计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行时,实现以下步骤:
获取针对应用系统的业务请求;
针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;
若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级。
本申请提供一种日志记录的处理系统,包括:应用系统服务器和日志监控服务器;
所述应用系统服务器用于,读取与业务请求对应的实时修改业务日志等级的等级变量;针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录;
所述日志监控服务器用于,获取针对应用系统的业务请求;针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级。
与现有技术相比,本申请具有如下优点:
采用本申请提供的方法,针对等级变量进行分析,判断所述等级变量是否包含日志等级信息;若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录;从而解决了现有技术中,应用系统必须重新启动才能够调整日志等级的问题。
附图说明
图1是本申请第一实施例的流程图;
图2是本申请第二实施例的流程图;
图3是本申请第三实施例的流程图;
图4是本申请第四实施例涉及的一个应用系统的示意图;
图5是本申请第五实施例的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请第一实施例提供一种日志记录的处理方法。请参看图1,该图为本申请第一实施例的流程图。以下结合图1对本申请第一实施例提供一种日志记录的处理方法进行详细说明。所述方法包括如下步骤:
步骤S101:读取与业务请求对应的实时修改业务日志等级的等级变量。
本步骤用于读取与业务请求对应的实时修改业务日志等级的等级变量。
应用系统往往会记录很多Debug和Info级别的日志来排查问题,在应用上线后为了性能考虑一般会把日志级别调整为Warn或者Error,避免海量的日志记录,但是如果应用系统出现问题并需要Debug和Info级别的日志协助排查的时,无法实时的调整日志等级来协助排查问题。
传统的日志等级修改一般是暂停应用,改写日志等级配置项再重启应用,等排查完问题之后再暂停应用把日志等级配置项改回去再重启应用,整个流程非常耗时。
本实施例中,应用系统读取与业务请求对应的实时修改业务日志等级的等级变量,从而为实现实时修改日志等级提供了前提,这里的等级变量可以是线程中的变量。
所述读取与业务请求对应的实时修改业务日志等级的等级变量,包括:
读取与业务请求对应的实时修改业务日志等级的映射调试上下文变量。
映射调试上下文(Mapped Diagnostic Context,MDC)是log4j和logback提供的一种方便在多线程条件下记录日志的功能。某些应用程序采用多线程的方式来处理多个用户的请求。在一个用户的使用过程中,可能有多个不同的线程来进行处理。典型的例子是Web应用服务器。当用户访问某个页面时,应用服务器可能会创建一个新的线程来处理该请求,也可能从线程池中复用已有的线程。在一个用户的会话存续期间,可能有多个线程处理过该用户的请求。这使得比较难以区分不同用户所对应的日志。当需要追踪某个用户在系统中的相关日志记录时,就会变得很麻烦。
一种解决的办法是采用自定义的日志格式,把用户的信息采用某种方式编码在日志记录中。这种方式的问题在于要求在每个使用日志记录器的类中,都可以访问到用户相关的信息。这样才可能在记录日志时使用。这样的条件通常是比较难以满足的。MDC的作用就是解决这个问题。
MDC可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的MDC的内容。当需要记录日志时,只需要从MDC中获取所需的信息即可。MDC的内容则由程序在适当的时候保存进去。对于一个Web应用来说,通常是在请求被处理的最开始保存这些数据。
下面,以SpringBoot和Logback为例,详细介绍如何实现,首先,实现org.springframework.web.servlet.HandlerInterceptor接口的preHandle和afterCompletion方法,在preHandle中解析是否包含level参数,如果包含那么存储到org.slf4j.MDC中。然后,实现ch.qos.logback.classic.turbo.TurboFilter的decide方法,从MDC中取出日志等级进行判断,并在logback的配置文件中配置turboFilter。
以所述业务请求的标识为索引,读取与业务请求对应的所述等级变量并针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息。
以所述业务请求的标识为索引检索日志等级信息,根据所述检索的结果判断所述等级变量是否包含日志等级信息。
本实施例中,等级变量可以存储在一个公共的内存中,以当前业务请求唯一ID作为key来索引,在记录日志时以当前请求的ID来获取日志等级进行判断。例如,业务请求的唯一标识(ID)为100,以100为key进行查找,找到唯一标识对应的value,如果所述value包含日志等级信息,则判断所述等级变量包含日志等级信息;如果所述value不包含日志等级信息,则判断所述等级变量不包含日志等级信息。
所述读取与业务请求对应的实时修改业务日志等级的等级变量,包括:
在根据用户的业务请求执行所述业务请求对应的业务逻辑前,读取用于监控所述用户的业务请求中要求实时修改业务日志等级的等级变量。
步骤S102:针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息。
本步骤用于应用系统针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息。
所述针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息,包括:
针对所述等级变量进行分析,判断所述等级变量是否包含严重等级、错误等级、警告等级、信息等级、调试等级中的一种。
例如,所述等级变量保存有level=Debug,则判断所述等级变量包含调试等级的日志等级;所述等级变量保存有level=Fatal,则判断所述等级变量包含严重等级的日志等级;所述等级变量保存有level=Error,则判断所述等级变量包含错误等级的日志等级;所述等级变量保存有level=Warn,则判断所述等级变量包含警告等级的日志等级;所述等级变量保存有level=Infor,则判断所述等级变量包含信息等级的日志等级。
步骤S103:若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录。
本步骤用于应用系统判断若所述等级变量包含日志等级信息,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录。
所述按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录,包括:
按照所述日志等级信息,获得严重等级、错误等级、警告等级、信息等级、调试等级中的一种日志等级;
按照所述日志等级,输出所述业务请求对应的业务逻辑的日志记录。
现有技术中,一种修改日志等级的方法是通过一个特定的请求来实时修改内存中日志等级,但是这种方式修改的日志等级对所有的请求都生效,如果对应应用的访问量很大那么会导致大量的日志打印出来,对问题排查存在很大的干扰,如果问题排查完成之后忘记把日志等级改回去也会导致海量的日志把磁盘打爆。
通过使用本实施例提供的方法,仅仅输出所述业务请求对应的业务逻辑的日志记录,从而避免了这种情况的发生。
所述按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录,包括:
按照所述日志等级信息,输出所述业务请求对应的业务逻辑的业务日志、性能日志、调用链日志中的至少一种。
所述业务日志是指根据所述业务的实现逻辑确定的日志记录信息,例如所述业务逻辑分为ABCD四个步骤,所述业务日志包括这四个步骤执行的相关信息。
所述性能日志是指,记录所述业务逻辑中某个子功能的时间信息,根据该时间信息,确定该子功能的性能特征。
所述调用链日志,是指反映所述业务逻辑实现的函数之间的调用关系。通过这些调用关系,能够更加快速的定位问题。
所述日志记录的处理方法,还包括:
若所述等级变量不包含所述日志等级信息,则根据系统配置信息获得配置的日志等级;
按照所述配置的日志等级,输出所述业务请求对应的业务逻辑的日志记录。
如果所述等级变量不包含所述日志等级信息,则根据系统配置信息获得配置的日志等级。例如,如果所述等级变量不包含所述日志等级信息,则根据logback中的filter的配置信息确定应该输出的日志等级。
所述日志记录的处理方法,还包括:
在退出所述业务请求对应的业务逻辑前,将所述等级变量清除;
在将所述等级变量清除之后,根据系统配置信息获得配置的日志等级;
按照所述配置的日志等级,输出所述业务请求对应的业务逻辑的日志记录。
本实施例中,通过在退出所述业务请求对应的业务逻辑前,将所述等级变量清除,实现了实时修改日志等级仅仅针对所述业务请求对应的业务逻辑,避免了将所述实时修改日志等级应用于其他无关的业务请求。
现有技术只能记录某个业务逻辑的日志,例如,如果有100万个请求,对应该业务逻辑就记录100万次,而采用本实施例提供的方案,仅仅记录当前一个请求经过的所有业务逻辑的日志。例如,如果有100万个请求,只有1个请求带有日志等级变量,那么经过5个业务逻辑就有5条日志,本方案只会记录5条日志。现有技术在同样的条件下需要记录100万*5条目志,海量的日志会带来很大的问题排查成本。
在上述的实施例中,提供了一种日志记录的处理方法,与之相对应的,本申请还提供一种日志记录的处理装置。请参看图2,其为本申请的一种日志记录的处理装置实施例的流程图。由于本实施例,即第二实施例,基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种日志记录的处理装置,包括:
变量读取单元201,用于读取与业务请求对应的实时修改业务日志等级的等级变量;
变量分析单元202,用于针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;
日志输出单元203,用于若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录。
本实施例中,所述日志记录的处理装置,还包括配置等级日志输出单元,所述配置等级日志输出单元用于:
若所述等级变量不包含所述日志等级信息,则根据系统配置信息获得配置的日志等级;
按照所述配置的日志等级,输出所述业务请求对应的业务逻辑的日志记录。
本实施例中,所述变量读取单元,具体用于:
在根据用户的业务请求执行所述业务请求对应的业务逻辑前,读取与业务请求对应的实时修改业务日志等级的等级变量。
本实施例中,所述日志记录的处理装置,还包括等级变量清除单元,所述等级变量清除单元用于:
在退出所述业务请求对应的业务逻辑前,将所述等级变量清除;
在将所述等级变量清除之后,根据系统配置信息获得配置的日志等级;
按照所述配置的日志等级,输出所述业务请求对应的业务逻辑的日志记录。
本实施例中,所述变量读取单元,具体用于:
读取与业务请求对应的实时修改业务日志等级的映射调试上下文变量。
本实施例中,所述变量读取单元,具体用于:
以所述业务请求的标识为索引,读取与业务请求对应的所述等级变量并针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息。
本实施例中,所述变量读取单元,具体用于:
以所述业务请求的标识为索引检索日志等级信息,根据所述检索的结果判断所述等级变量是否包含日志等级信息。
本实施例中,所述变量分析单元,具体用于:
针对所述等级变量进行分析,判断所述等级变量是否包含严重等级、错误等级、警告等级、信息等级、调试等级中的一种。
本实施例中,所述日志输出单元,具体用于:
按照所述日志等级信息,获得严重等级、错误等级、警告等级、信息等级、调试等级中的一种日志等级;
按照所述日志等级,输出所述业务请求对应的业务逻辑的日志记录。
本实施例中,所述日志输出单元,具体用于:
按照所述日志等级信息,输出所述业务请求对应的业务逻辑的业务日志、性能日志、调用链日志中的至少一种。
本申请第三实施例提供一种日志记录的处理方法。请参看图3,该图为本申请第三实施例的流程图。以下结合图3对本申请第三实施例提供一种日志记录的处理方法进行详细说明。所述方法包括如下步骤:
步骤S301:获取针对应用系统的业务请求。
本步骤用于监控服务获取针对应用系统的业务请求。
例如,一般通过Servlet对应的filter或者Webx中的某个pipeline或者SpringBoot中的Interceptor来拦截用户请求,获取针对应用系统的业务请求。
步骤S302:针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息。
本步骤用于针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息。
所述针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息,包括:
分析所述业务请求中是否包含严重等级、错误等级、警告等级、信息等级、调试等级中的一种;
若是,则判断所述业务请求包含日志等级信息;
若否,则判断所述业务请求不包含日志等级信息。
例如,所述业务请求包含level=Debug,则判断所述业务请求包含调试等级的日志等级;所述业务请求包含level=Fatal,则判断所述业务请求包含严重等级的日志等级;所述业务请求包含level=Error,则判断所述业务请求包含错误等级的日志等级;所述业务请求包含level=Warn,则判断所述业务请求包含警告等级的日志等级;所述业务请求包含level=Infor,则判断所述业务请求包含信息等级的日志等级。
步骤S303:若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级。
本步骤用于若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级。
例如,所述业务请求包含level=Debug,则获得调试等级的日志等级;所述业务请求包含level=Fatal,则获得严重等级的日志等级;所述业务请求包含level=Error,则获得错误等级的日志等级;所述业务请求包含level=Warn,则获得警告等级的日志等级;所述业务请求包含level=Infor,则获得信息等级的日志等级。
所述根据所述日志等级信息,获得指定日志等级,包括:
根据所述日志等级信息获得严重等级、错误等级、警告等级、信息等级、调试等级中的一种日志等级。
所述将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级,包括:
将与所述业务请求对应的实时修改业务日志等级的映射调试上下文修改为所述业务请求中包含的日志等级。
映射调试上下文(Mapped Diagnostic Context,MDC)是log4j和logback提供的一种方便在多线程条件下记录日志的功能。某些应用程序采用多线程的方式来处理多个用户的请求。在一个用户的使用过程中,可能有多个不同的线程来进行处理。典型的例子是Web应用服务器。当用户访问某个页面时,应用服务器可能会创建一个新的线程来处理该请求,也可能从线程池中复用已有的线程。在一个用户的会话存续期间,可能有多个线程处理过该用户的请求。这使得比较难以区分不同用户所对应的日志。当需要追踪某个用户在系统中的相关日志记录时,就会变得很麻烦。
一种解决的办法是采用自定义的日志格式,把用户的信息采用某种方式编码在日志记录中。这种方式的问题在于要求在每个使用日志记录器的类中,都可以访问到用户相关的信息。这样才可能在记录日志时使用。这样的条件通常是比较难以满足的。MDC的作用就是解决这个问题。
请参考图4,其为本申请第四实施例的示意图,该实施例是采用本申请第三实施例提供的日志记录的处理方法的一个应用系统的示意图。
图4提供的方案通过拦截用户请求,解析请求参数中特定的日志等级变量,通过鉴权后修改线程本地变量来达到修改本次请求日志等级的目的,主要流程包括:(1)拦截用户请求,一般是Servlet对应的filter或者Webx中的某个pipeline或者SpringBoot中的Interceptor等;(2)判断请求参数是否包含修改日志等级的参数,比如判断请求参数中是否存在名称为level的参数,如果存在执行第3步,否则执行第4步;(3)保存日志等级到线程变量中,例如请求参数为level=Debug,那么保存日志等级Debug到线程变量中,如果使用slf4j的日志框架可以将线程变量保存到MDC中;(4)进入业务逻辑处理阶段,当记录日志的时候如果当前线程变量中包括日志等级那么使用该属性值作为日志等级,否则使用系统配置的日志等级,该功能无需侵入业务代码中处理,一般使用对应的日志框架提供的plugin统一处理,例如logback中通过配置TurboFilter来达到该目的;(5)业务逻辑调用结束后清空当前线程中的日志等级变量,并将业务数据结果返回。
本系统的核心在于如何设置日志等级的线程变量以及如何使用设置好的日志等级,下面以SpringBoot和Logback详细介绍如何实现:(1)实现org.springframework.web.servlet.HandlerInterceptor接口的preHandle和afterCompletion方法,在preHandle中解析是否包含level参数,如果包含那么存储到org.slf4j.MDC中;(2)实现ch.qos.logback.classic.turbo.TurboFilter的decide方法,从MDC中取出日志等级进行判断,并在logback的配置文件中配置turboFilter。
本申请第五实施例提供一种日志记录的处理装置,包括:
在上述的实施例中,提供了一种日志记录的处理方法,与之相对应的,本申请还提供一种日志记录的处理装置。请参看图5,其为本申请的一种日志记录的处理装置实施例的流程图。由于本实施例,即第五实施例,基本相似于第三方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种日志记录的处理装置,包括:
请求获取单元501,用于获取针对应用系统的业务请求;
请求分析单元502,用于针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;
等级修改单元503,用于若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级。
本实施例中,所述请求分析单元,具体用于:
分析所述业务请求中是否包含严重等级、错误等级、警告等级、信息等级、调试等级中的一种;
若是,则判断所述业务请求包含日志等级信息;
若否,则判断所述业务请求不包含日志等级信息。
本实施例中,所述日志等级信息包括严重等级、错误等级、警告等级、信息等级、调试等级。
本实施例中,所述等级修改单元,具体用于:
将与所述业务请求对应的实时修改业务日志等级的映射调试上下文修改为所述业务请求中包含的日志等级。
本申请第六实施例提供一种电子设备,所述电子设备包括:
处理器;
存储器,用于存储程序,所述程序在被所述处理器读取执行时,执行如下操作:
读取与业务请求对应的实时修改业务日志等级的等级变量;
针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;
若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录。
本申请第七实施例提供一种计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行时,实现以下步骤:
读取与业务请求对应的实时修改业务日志等级的等级变量;
针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;
若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录。本申请第八实施例提供一种电子设备,所述电子设备包括:
处理器;
存储器,用于存储程序,所述程序在被所述处理器读取执行时,执行如下操作:
获取针对应用系统的业务请求;
针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;
若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级。
本申请第九实施例提供一种计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行时,实现以下步骤:
获取针对应用系统的业务请求;
针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;
若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级。
本申请第十实施例提供一种日志记录的处理系统,包括:应用系统服务器和日志监控服务器;
所述应用系统服务器用于,读取与业务请求对应的实时修改业务日志等级的等级变量;针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录;
所述日志监控服务器用于,获取针对应用系统的业务请求;针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个操作器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (21)

1.一种日志记录的处理方法,其特征在于,包括:
读取与业务请求对应的实时修改业务日志等级的等级变量;
针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;
若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录;
在退出所述业务请求对应的业务逻辑前,将所述等级变量清除。
2.根据权利要求1所述的日志记录的处理方法,其特征在于,还包括:
若所述等级变量不包含所述日志等级信息,则根据系统配置信息获得配置的日志等级;
按照所述配置的日志等级,输出所述业务请求对应的业务逻辑的日志记录。
3.根据权利要求1所述的日志记录的处理方法,其特征在于,所述读取与业务请求对应的实时修改业务日志等级的等级变量,包括:
在根据用户的业务请求执行所述业务请求对应的业务逻辑前,读取与业务请求对应的实时修改业务日志等级的等级变量。
4.根据权利要求3所述的日志记录的处理方法,其特征在于,还包括:
在将所述等级变量清除之后,根据系统配置信息获得配置的日志等级;
按照所述配置的日志等级,输出所述业务请求对应的业务逻辑的日志记录。
5.根据权利要求1所述的日志记录的处理方法,其特征在于,所述读取与业务请求对应的实时修改业务日志等级的等级变量,包括:
读取与业务请求对应的实时修改业务日志等级的映射调试上下文变量。
6.根据权利要求1所述的日志记录的处理方法,其特征在于,以所述业务请求的标识为索引,读取与业务请求对应的所述等级变量并针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息。
7.根据权利要求6所述的日志记录的处理方法,其特征在于,以所述业务请求的标识为索引检索日志等级信息,根据所述检索的结果判断所述等级变量是否包含日志等级信息。
8.根据权利要求6所述的日志记录的处理方法,其特征在于,所述针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息,包括:
针对所述等级变量进行分析,判断所述等级变量是否包含严重等级、错误等级、警告等级、信息等级、调试等级中的一种。
9.根据权利要求8所述的日志记录的处理方法,其特征在于,所述按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录,包括:
按照所述日志等级信息,获得严重等级、错误等级、警告等级、信息等级、调试等级中的一种日志等级;
按照所述日志等级,输出所述业务请求对应的业务逻辑的日志记录。
10.根据权利要求1所述的日志记录的处理方法,其特征在于,所述按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录,包括:
按照所述日志等级信息,输出所述业务请求对应的业务逻辑的业务日志、性能日志、调用链日志中的至少一种。
11.一种日志记录的处理装置,其特征在于,包括:
变量读取单元,用于读取与业务请求对应的实时修改业务日志等级的等级变量;
变量分析单元,用于针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;
日志输出单元,用于若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录;
变量清除单元,用于在退出所述业务请求对应的业务逻辑前,将所述等级变量清除。
12.一种电子设备,其特征在于,所述电子设备包括:
处理器;
存储器,用于存储程序,所述程序在被所述处理器读取执行时,执行如下操作:
读取与业务请求对应的实时修改业务日志等级的等级变量;
针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;
若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录;
在退出所述业务请求对应的业务逻辑前,将所述等级变量清除。
13.一种计算机可读取存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现以下步骤:
读取与业务请求对应的实时修改业务日志等级的等级变量;
针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;
若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录;
在退出所述业务请求对应的业务逻辑前,将所述等级变量清除。
14.一种日志记录的处理方法,其特征在于,包括:
获取针对应用系统的业务请求;
针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;
若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级;在退出所述业务请求对应的业务逻辑前,将所述等级变量清除。
15.根据权利要求14所述的日志记录的处理方法,其特征在于,所述针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息,包括:
分析所述业务请求中是否包含严重等级、错误等级、警告等级、信息等级、调试等级中的一种;
若是,则判断所述业务请求包含日志等级信息;
若否,则判断所述业务请求不包含日志等级信息。
16.根据权利要求14所述的日志记录的处理方法,其特征在于,所述日志等级信息包括严重等级、错误等级、警告等级、信息等级、调试等级。
17.根据权利要求14所述的日志记录的处理方法,其特征在于,所述将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级,包括:
将与所述业务请求对应的实时修改业务日志等级的映射调试上下文修改为所述业务请求中包含的日志等级。
18.一种日志记录的处理装置,其特征在于,包括:
请求获取单元,用于获取针对应用系统的业务请求;
请求分析单元,用于针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;
等级修改单元,用于若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级;
变量清除单元,用于在退出所述业务请求对应的业务逻辑前,将所述等级变量清除。
19.一种电子设备,其特征在于,所述电子设备包括:
处理器;
存储器,用于存储程序,所述程序在被所述处理器读取执行时,执行如下操作:
获取针对应用系统的业务请求;
针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;
若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级;在退出所述业务请求对应的业务逻辑前,将所述等级变量清除。
20.一种计算机可读取存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现以下步骤:
获取针对应用系统的业务请求;
针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;
若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级;在退出所述业务请求对应的业务逻辑前,将所述等级变量清除。
21.一种日志记录的处理系统,其特征在于,包括:应用系统服务器和日志监控服务器;
所述应用系统服务器用于,读取与业务请求对应的实时修改业务日志等级的等级变量;针对所述等级变量进行分析,判断所述等级变量是否包含日志等级信息;若是,则按照所述日志等级信息,输出所述业务请求对应的业务逻辑的日志记录;在退出所述业务请求对应的业务逻辑前,将所述等级变量清除;
所述日志监控服务器用于,获取针对应用系统的业务请求;针对所述业务请求进行分析,判断所述业务请求中是否包含日志等级信息;若是,则将与所述业务请求对应的实时修改业务日志等级的等级变量修改为所述业务请求中包含的日志等级;在退出所述业务请求对应的业务逻辑前,将所述等级变量清除。
CN201910038094.4A 2019-01-15 2019-01-15 一种日志记录的处理方法、装置及系统 Active CN111435327B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910038094.4A CN111435327B (zh) 2019-01-15 2019-01-15 一种日志记录的处理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910038094.4A CN111435327B (zh) 2019-01-15 2019-01-15 一种日志记录的处理方法、装置及系统

Publications (2)

Publication Number Publication Date
CN111435327A CN111435327A (zh) 2020-07-21
CN111435327B true CN111435327B (zh) 2023-11-14

Family

ID=71580854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910038094.4A Active CN111435327B (zh) 2019-01-15 2019-01-15 一种日志记录的处理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN111435327B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113032344B (zh) * 2020-08-25 2021-08-27 广州锦行网络科技有限公司 一种远程登录日志记录的清理方法
CN112882919A (zh) * 2021-03-29 2021-06-01 浪潮云信息技术股份公司 基于log4j的微服务架构的日志链路追踪方法和系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11296415A (ja) * 1998-04-09 1999-10-29 Toshiba Tec Corp ログ出力制御方法及び装置並びにログ出力制御プログラムを記録した記録媒体
CN101753971A (zh) * 2008-12-22 2010-06-23 中兴通讯股份有限公司 一种统一视讯管理平台中内容管理系统中的日志系统及日志记录方法
CN106681891A (zh) * 2015-11-05 2017-05-17 阿里巴巴集团控股有限公司 一种Java应用系统中调整日志级别的方法及装置
CN106708711A (zh) * 2015-11-17 2017-05-24 阿里巴巴集团控股有限公司 一种日志信息输出控制方法及装置
CN107181633A (zh) * 2017-07-27 2017-09-19 郑州云海信息技术有限公司 一种远程获取业务日志的方法及系统
CN107291615A (zh) * 2017-05-19 2017-10-24 北京北信源软件股份有限公司 一种web前端日志输出方法与装置
CN108846070A (zh) * 2018-06-07 2018-11-20 北京京东尚科信息技术有限公司 分布式系统的日志处理方法、系统、电子设备和存储介质
CN109032881A (zh) * 2017-06-09 2018-12-18 武汉斗鱼网络科技有限公司 一种日志级别动态调整方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI380168B (en) * 2005-12-26 2012-12-21 Ibm System, method, program, and system implementation method for transaction process logging
US7827447B2 (en) * 2007-01-05 2010-11-02 International Business Machines Corporation Sliding window mechanism for data capture and failure analysis
US8825840B2 (en) * 2011-02-22 2014-09-02 Intuit Inc. Systems and methods for self-adjusting logging of log messages
US8452786B2 (en) * 2011-05-06 2013-05-28 Sap Ag Systems and methods for business process logging
US9116906B2 (en) * 2012-06-12 2015-08-25 Sap Se Centralized read access logging
US9342438B2 (en) * 2013-03-15 2016-05-17 Yahoo! Inc. Method and system for data-triggered dynamic log level control
US10521279B2 (en) * 2017-06-01 2019-12-31 Vmware, Inc. System and method for dynamic log level control

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11296415A (ja) * 1998-04-09 1999-10-29 Toshiba Tec Corp ログ出力制御方法及び装置並びにログ出力制御プログラムを記録した記録媒体
CN101753971A (zh) * 2008-12-22 2010-06-23 中兴通讯股份有限公司 一种统一视讯管理平台中内容管理系统中的日志系统及日志记录方法
CN106681891A (zh) * 2015-11-05 2017-05-17 阿里巴巴集团控股有限公司 一种Java应用系统中调整日志级别的方法及装置
CN106708711A (zh) * 2015-11-17 2017-05-24 阿里巴巴集团控股有限公司 一种日志信息输出控制方法及装置
CN107291615A (zh) * 2017-05-19 2017-10-24 北京北信源软件股份有限公司 一种web前端日志输出方法与装置
CN109032881A (zh) * 2017-06-09 2018-12-18 武汉斗鱼网络科技有限公司 一种日志级别动态调整方法及装置
CN107181633A (zh) * 2017-07-27 2017-09-19 郑州云海信息技术有限公司 一种远程获取业务日志的方法及系统
CN108846070A (zh) * 2018-06-07 2018-11-20 北京京东尚科信息技术有限公司 分布式系统的日志处理方法、系统、电子设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于状态与关联日志的业务对象关联模型;杨美荣;王忠杰;战德臣;;计算机应用(09);全文 *

Also Published As

Publication number Publication date
CN111435327A (zh) 2020-07-21

Similar Documents

Publication Publication Date Title
US11023355B2 (en) Dynamic tracing using ranking and rating
CN107251024B (zh) 用于诊断执行问题的数据库查询执行跟踪和数据生成
US9129058B2 (en) Application monitoring through continuous record and replay
US20180365085A1 (en) Method and apparatus for monitoring client applications
US8949799B2 (en) Program log record optimization
US8832125B2 (en) Extensible event-driven log analysis framework
Khalid et al. Examining the relationship between findbugs warnings and app ratings
US9356966B2 (en) System and method to provide management of test data at various lifecycle stages
US20160283357A1 (en) Call stack relationship acquiring method and apparatus
CN104298588A (zh) 一种持续集成的实现方法及装置
US9336116B2 (en) Automatic correlation accelerator
CN112835924A (zh) 实时计算任务处理方法、装置、设备及存储介质
CN111522703A (zh) 监控访问请求的方法、设备和计算机程序产品
CN115080398A (zh) 一种接口自动化测试系统及方法
US10083070B2 (en) Log file reduction according to problem-space network topology
CN111435327B (zh) 一种日志记录的处理方法、装置及系统
US20120173498A1 (en) Verifying Correctness of a Database System
Svajlenko et al. Big data clone detection using classical detectors: an exploratory study
US8850407B2 (en) Test script generation
CN110941632A (zh) 一种数据库审计方法、装置及设备
US9436575B2 (en) Selective profiling of applications
CN116185706A (zh) 数据备份方法、装置、计算及存储介质及电子设备
CN116089191A (zh) 接口测试方法、装置、处理器及电子设备
CN112799952A (zh) 用于自动测试云平台账户体系权限的方法与设备
CN116108035A (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
GR01 Patent grant
GR01 Patent grant