CN109766239A - 日志输出控制方法、系统及计算机可读存储介质 - Google Patents
日志输出控制方法、系统及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109766239A CN109766239A CN201811594088.9A CN201811594088A CN109766239A CN 109766239 A CN109766239 A CN 109766239A CN 201811594088 A CN201811594088 A CN 201811594088A CN 109766239 A CN109766239 A CN 109766239A
- Authority
- CN
- China
- Prior art keywords
- log
- class file
- instruction collection
- behalf
- target class
- 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
Links
Abstract
本申请涉及一种日志输出方法、系统及计算机可读存储介质,日志输出控制方法包括:监听缓存组件内发布订阅服务渠道中的数据量;在监听到发布订阅服务渠道中的数据量发生变化的情况下,拉取管理后台新增至发布订阅服务渠道中的日志指令集;根据日志指令集的类型增加或停止业务日志的输出。本申请实施例提供的方法,根据接收到的日志指令集类型,在线上业务系统出现错误后输出详尽的业务日志以供排查分析,而在正常业务处理时尽可能减少业务日志输出,加快了线上错误的排查定位,减轻了业务系统的负载压力,保障了用户使用体验。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种日志输出控制方法、系统及计算机可读存储介质。
背景技术
随着互联网的发展,线上业务服务的发展蓬勃,用户在使用线上业务服务系统时,业务系统经常会出现错误(bug),严重影响了用户的使用体验,需要管理人员及时处理。管理人员在处理错误时,首要工作是对错误可能发生的原因进行排查定位,常用的几种错误排查方式包括,查看业务系统所在服务器的内存与CPU(中央处理器)使用情况、回溯程序代码业务逻辑、跟踪业务系统输出的业务日志等。
在上述提到的几种错误排查方式中,跟踪业务服务日志是最为高效的方式:管理人员可以通过分析业务日志中上下文数据变化,能够快速定位出业务系统的错误出现的原因,并针对性的进行修复,发布新版本,从而达到线上错误的解决的目的。然而并非所有错误出现时都会有详尽的业务日志供管理人员去分析排查,因为如果在业务处理逻辑中频繁的输出业务日志,不仅会加长每次业务处理的时间,降低用户使用体验,而且会增大服务器的CPU与磁盘IO的使用率,加剧业务系统的负载压力。所以在实际线上运行的业务系统一般只会输出关键性业务日志与可能出现的异常日志,对于过程数据则不会输出,而一旦出现错误,则会因为日志数据的不够全面导致错误排查陷入困难的境地。在这种业务日志不全面的情况下,往往会选择回溯代码或者在线下测试环境进行模拟测试分析,但由于没有真实的请求数据作为支撑,往往很难复现线上出现的错误,使得错误的分析定位进入瓶颈。
所以现有技术存在正常业务处理时业务日志输出多时将占用业务处理时间,而输出的日志数据不全面时,又难以复现线上错误的问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种日志输出控制方法。
第一方面,本申请提供了一种日志输出控制方法,包括:监听缓存组件内发布订阅服务渠道中的数据量;在监听到发布订阅服务渠道中的数据量发生变化的情况下,拉取管理后台新增至发布订阅服务渠道中的日志指令集;根据日志指令集的类型增加或停止业务日志的输出。
可选的,在根据日志指令集增加或停止业务日志输出的步骤之前,还包括:校验日志指令集的正确性;其中,日志指令集的正确性包括日志指令集的合法性以及与日志指令集相对应的目标类文件的存在性;在判断日志指令集不正确的情况下,终止操作,并输出警示性日志;在判断日志指令集正确的情况下,根据日志指令集的类型增加或停止业务日志的输出。
可选的,校验日志指令集的合法性的方法包括以下一种或其组合:校验目标类文件是否中包含日志指令集中的变量;校验日志指令集的格式是否正确;校验日志指令集中的参数个数与目标类文件中的参数个数是否相匹配。
可选的,根据日志指令集的类型增加或停止业务日志的输出的步骤,具体包括:识别日志指令集的类型,在日志指令集的类型为增加类型的情况下,生成与目标类文件相对应的代理子类文件,以使代理子类文件代替目标类文件处理业务逻辑并输出业务日志;在日志指令集的类型为删除类型的情况下,删除目标类文件对应的代理子类文件,以停止输出业务日志。
可选的,建立目标类文件与代理子类文件的映射关系,并在映射表中存储映射关系。
可选的,在删除目标类文件对应的代理子类文件之后,还包括:删除在映射表中存储的目标类文件与代理子类文件的映射关系。
可选的,在删除目标类文件对应的代理子类文件之后,还包括:恢复目标类文件处理业务逻辑。
可选的,生成与目标类文件相对应的代理子类文件的步骤包括:使用内嵌汇编语言关键字的字节码增强技术生成目标类文件对应的代理子类文件。
第二方面,本申请提供了一种日志输出控制系统,包括:存储器,配置为存储可执行指令;处理器,配置为执行存储的指令以实现如第一方面的日志输出控制方法。
第三方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如第一方面的日志输出控制方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的该方法,业务系统的服务器监听缓存组件内发布订阅服务渠道中的数据量,管理人员通过管理操作系统操作界面针对指定的业务系统添加日志指令集,管理后台将日志指令集发送到缓存组件中(Redis消息发布订阅组件),在监听到发布订阅服务渠道中的数据量发生变化的情况下,服务器拉取管理后台新增至发布订阅服务渠道中的日志指令集,这样保证了业务系统的服务器可以即时获取管理人员添加的日志指令集。服务器根据日志指令集的类型增加或停止业务日志的输出,例如,在业务系统中有错误发生的情况下,管理人员通过管理操作系统操作界面添加用于控制增加业务日志的输出的指令,以使服务器输出详尽的业务日志供管理人员排查分析,在管理人员通过排查分析业务日志找出错误之后,管理人员通过管理操作系统操作界面添加用于控制停止业务日志的输出的指令,以使服务器停止额外的业务日志的输出,只输出关键性业务日志与可能出现的异常日志,从而减少业务日志的输出。因此,本申请实施例提供的该方法解决了现有技术存在正常业务处理时业务日志输出多时将占用业务处理时间,而输出的日志数据不全面时,又难以复现线上错误的问题,实现了在线上业务系统出现错误后输出详尽的业务日志供管理人员排查分析,而又在正常业务处理时尽可能减少业务日志输出,减轻业务系统的负载压力,保障用户体验的技术效果。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种日志输出方法的流程图;
图2为本申请实施例提供的一种日志输出方法的另一流程图;
图3为本申请实施例提供的一种日志输出方法的再一流程图;
图4为本申请实施例提供的一种日志输出方法的又一流程图;
图5为本申请实施例提供的一种日志输出方法的又一流程图;
图6为本申请实施例提供的一种日志输出方法的又一流程图;
图7为本申请实施例提供的一种服务器业务系统功能模块扩展的示意框图;
图8为本申请实施例提供的一种日志输出控制系统的示意框图;
图9为本申请一个实施例提供的一种日志输出控制系统的部署架构。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的一种日志输出方法的流程图,该日志输出方法包括:
步骤102,监听缓存组件内发布订阅服务渠道中的数据量;
步骤104,在监听到发布订阅服务渠道中的数据量发生变化的情况下,拉取管理后台新增至发布订阅服务渠道中的日志指令集;
步骤106,根据日志指令集的类型增加或停止业务日志的输出。
本申请实施例提供的该方法,业务系统的服务器监听缓存组件内发布订阅服务渠道中的数据量,管理人员通过管理操作系统操作界面针对指定的业务系统添加日志指令集,管理后台将日志指令集发送到缓存组件中(Redis消息发布订阅组件),在监听到发布订阅服务渠道中的数据量发生变化的情况下,服务器拉取管理后台新增至发布订阅服务渠道中的日志指令集,这样保证了业务系统的服务器可以即时获取管理人员添加的日志指令集。服务器根据日志指令集的类型增加或停止业务过程日志的输出,例如,在业务系统中有错误发生的情况下,管理人员通过管理操作系统操作界面添加用于控制增加业务日志的输出的指令,以使服务器输出详尽的业务日志供管理人员排查分析,在管理人员通过排查分析业务日志找出错误之后,管理人员通过管理操作系统操作界面添加用于控制停止业务日志的输出的指令,以使服务器停止额外的业务日志的输出,只输出关键性业务日志与可能出现的异常日志,从而减少业务日志的输出。因此,本申请实施例提供的该方法解决了现有技术存在正常业务处理时业务日志输出较多、日志数据不够全面或线下模拟测试分析难以复现线上错误的问题,实现了在线上业务系统出现错误后输出详尽的业务日志供管理人员排查分析,而又在正常业务处理时尽可能减少业务日志输出,加快线上错误的排查定位,减轻业务系统的负载压力,保障用户体验的技术效果。
进一步地,上述业务日志为过程日志,相对于关键性业务日志与可能出现的异常日志,过程日志能够更全面的反应数据变化,从而使管理人员可以快速定位出业务系统的错误出现的原因。
可选的,如图2所示,为本申请实施例提供的一种日志输出方法的另一流程图,该日志输出方法包括:
步骤202,监听缓存组件内发布订阅服务渠道中的数据量;
步骤204,在监听到发布订阅服务渠道中的数据量发生变化的情况下,拉取管理后台新增至发布订阅服务渠道中的日志指令集;
步骤206,校验日志指令集的正确性;在判断日志指令集不正确的情况下,跳转步骤208;在判断日志指令集正确的情况下,跳转步骤210;
步骤208,在判断日志指令集不正确的情况下,输出警示性日志;
步骤210,在判断日志指令集正确的情况下,根据日志指令集的类型增加或停止业务日志的输出。
在该实施例中,在业务系统服务器拉取管理后台新增至发布订阅服务渠道中的日志指令集之后,在根据日志指令集增加或停止业务日志输出的步骤之前,服务器通过热加载控制模块校验日志指令集的正确性,在判断日志指令集不正确的情况下,终止操作,并输出警示性日志,防止将错误的指令集应用到业务系统中,造成业务系统的崩溃;在判断日志指令集正确的情况下,根据日志指令集的类型增加或停止业务日志的输出,保证错误排查定位工作的顺利完成。其中,日志指令集的正确性包括日志指令集的合法性以及与日志指令集相对应的目标类文件的存在性。若日志指令集不合法,则会造成业务系统的崩溃,若与日志指令集相对应的目标类文件不存在,则日志指令集无法应用到业务系统中,因此需要检验日志指令集的合法性以及与日志指令集相对应的目标类文件的存在性。
可选的,在如图2所示的本申请实施例提供的一种日志输出方法中,校验日志指令集的合法性的方法包括以下一种或其组合:校验目标类文件是否中包含所述日志指令集中的变量;校验日志指令集的格式是否正确;校验日志指令集中的参数个数与目标类文件中的参数个数是否相匹配。
在该实施例中,在热加载模块响应于日志指令集之前需要校验日志指令集的合法性,以保证业务系统的正常运行,校验日志指令集的合法性的方法包括以下一种或其组合:校验目标类文件是否中包含日志指令集中的变量;校验日志指令集的格式是否正确;校验日志指令集中的参数个数与目标类文件中的参数个数是否相匹配。若日志指令集的合法性出现问题,轻则导致该日志指令集无法应用到目标类文件中,从而使热加载模块响应失败,管理人员无法获得日志输出,重则导致业务系统崩溃,这都将影响到用户使用业务系统时的使用体验。因此,在热加载模块响应于日志指令集之前校验日志指令集的合法性,可以降低风险,提升用户使用体验。
可选的,如图3所示,为本申请实施例提供的一种日志输出方法的另一流程图,该数据传送的校验方法包括:
步骤302,监听缓存组件内发布订阅服务渠道中的数据量;
步骤304,在监听到发布订阅服务渠道中的数据量发生变化的情况下,拉取管理后台新增至发布订阅服务渠道中的日志指令集;
步骤306,识别日志指令集的类型;在日志指令集的类型为删除类型的情况下,跳转步骤308;在日志指令集的类型为增加类型的情况下,跳转步骤310。
步骤308,在日志指令集的类型为删除类型的情况下,删除目标类文件对应的代理子类文件,以停止输出业务日志;流程结束;
步骤310,在日志指令集的类型为增加类型的情况下,生成与目标类文件相对应的代理子类文件,以使代理子类文件代替目标类文件处理业务逻辑并输出业务日志;流程结束。
在该实施例中,日志指令集包含用于指示指令类型(ADD或DELETE)的字段,在日志指令集正确的前提下,业务系统的服务器通过识别该字段来确定日志指令集的类型为增加类型(ADD)或删除类型(DELETE)。在日志指令集的类型为增加类型的情况下,生成与目标类文件相对应的代理子类文件,以使代理子类文件代替目标类文件处理业务逻辑并输出业务日志,在日志指令集的类型为删除类型的情况下,删除目标类文件对应的代理子类文件,以停止输出业务日志,从而实现了管理人员根据实际需要,在管理后台输入增加类型的日志指令集或删除类型的日志指令集,以完成动态扩充或缩减特定线上运行业务系统的业务日志输出,为线上错误的排查定位提供便利,同时也降低了业务系统的负载。
可选的,如图4所示,为本申请实施例提供的一种日志输出方法的另一流程图,该数据传送的校验方法包括:
步骤402,监听缓存组件内发布订阅服务渠道中的数据量;
步骤404,在监听到发布订阅服务渠道中的数据量发生变化的情况下,拉取管理后台新增至发布订阅服务渠道中的日志指令集;
步骤406,识别日志指令集的类型;在日志指令集的类型为删除类型的情况下,跳转步骤408;在日志指令集的类型为增加类型的情况下,跳转步骤412;
步骤408,在日志指令集的类型为删除类型的情况下,删除目标类文件对应的代理子类文件,以停止输出业务日志;跳转步骤410;
步骤410;删除目标类文件对应的代理子类文件,以停止输出业务日志;结束流程;
步骤412,在日志指令集的类型为增加类型的情况下,生成与目标类文件相对应的代理子类文件,以使代理子类文件代替目标类文件处理业务逻辑并输出业务日志;跳转步骤414;
步骤414,建立目标类文件与代理子类文件的映射关系,并在映射表中存储映射关系,结束流程。
在该实施例中,在业务系统的服务器识别日志指令集为增加类型的指令集并生成与目标类文件相对应的代理子类文件之后,服务器建立目标类文件与代理子类文件的映射关系,通过此映射关系可以识别目标类文件与代理子类文件的关系,在处理线上业务时,可以通过目标类文件查找到代理子类文件,从而使代理子类文件代替目标类文件处理业务逻辑并输出业务日志,实现了在不改变业务处理逻辑的情况下,输出详尽的业务日志。进一步的,需要在映射表中存储该映射关系,以便服务器能够在映射表中查询到该映射关系并应用。在业务系统的服务器根据接收到的增加类型的指令生成代理子类文件代替目标类文件处理业务逻辑并输出业务日志之后,管理人员通过排查业务日志快速定位出业务系统错误出现的原因,在解决问题之后,不需要业务系统继续输出业务日志加剧业务系统的负载压力,管理人员输入删除类型的日志指令集,业务系统的服务器根据接收到的删除类型的指令集删除目标类文件对应的代理子类文件,以停止输出业务日志。由于在生成代理子类文件之后,还建立了目标类文件与代理子类文件的映射关系,并将该映射关系存储在映射表中,在代理子类文件被删除之后,该映射关系失效,为了避免业务系统出现错误及释放映射表的存储空间,需要将失效的映射关系从映射表中删除。
可选的,如图5所示,为本申请实施例提供的一种日志输出方法的另一流程图,该数据传送的校验方法包括:
步骤502,监听缓存组件内发布订阅服务渠道中的数据量;
步骤504,在监听到发布订阅服务渠道中的数据量发生变化的情况下,拉取管理后台新增至发布订阅服务渠道中的日志指令集;
步骤506,识别日志指令集的类型;在日志指令集的类型为删除类型的情况下,跳转至步骤508;在日志指令集的类型为增加类型的情况下,跳转至步骤512。
步骤508,在日志指令集的类型为删除类型的情况下,删除目标类文件对应的代理子类文件,以停止输出业务日志;跳转步骤510;
步骤510,恢复所述目标类文件处理业务逻辑;结束流程;
步骤512,在日志指令集的类型为增加类型的情况下,生成与目标类文件相对应的代理子类文件,以使代理子类文件代替目标类文件处理业务逻辑并输出业务日志;结束流程。
在该实施例中,删除代理子类文件与映射关系之后,需要恢复目标类文件处理系统中业务,即恢复目标类文件处理业务逻辑,避免业务系统崩溃,影响用户的使用体验。
可选的,在如图3至6中任一项所示的本申请实施例提供的一种日志输出方法中,使用内嵌汇编语言关键字的字节码增强技术生成目标类文件对应的代理子类文件。
在该实施例中,内嵌汇编语言关键字的字节码增强技术为ASM字节码增强技术,通过应用该技术,实现了在不改变目标类文件的前提下,生成代理子类文件以完成业务的处理和业务日志的输出,确保在线上错误查找的过程中不会影响到正常业务的处理的技术效果。
图6为本申请一个实施例提供的一种日志输出方法的流程图,该日志输出方法包括:
步骤602,在管理后台配置日志指令;
步骤604,持久化指令到数据库,并将指令集发布到redis通道;
步骤606,业务服务监听redis通道,并把相关指令集拉回;
步骤608,订阅监听模块将指令集数据传递给热加载控制模块;
步骤610,判断指令集是否正确?如指令集正确,跳转步骤614;如指令集不正确,跳转步骤612;
步骤612,不执行后续操作,输出警示性日志;流程结束;
步骤614,依据指令集依据目标类文件动态生成代理子类文件;
步骤616,将代理子类文件与目标类文件写入映射关系表;
步骤618,由代理子类文件代替目标类文件处理后续业务,并生成期望业务日志;流程结束。
本申请实施例提供的该方法,业务系统的服务器通过redis通道与管理后台相连接,业务系统的服务器监听缓存组件内发布订阅服务渠道中的数据量,管理人员通过管理操作系统操作界面针对指定的业务系统添加日志指令集,管理后台将日志指令集发送到缓存组件中(Redis消息发布订阅组件),在监听到发布订阅服务渠道中的数据量发生变化的情况下,服务器拉取管理后台新增至发布订阅服务渠道中的日志指令集,这样保证了业务系统的服务器可以即时获取管理人员添加的日志指令集。服务器根据日志指令集的类型增加或停止业务过程日志的输出,例如,在业务系统中有错误发生的情况下,管理人员通过管理操作系统操作界面添加用于控制增加业务日志的输出的指令,以使服务器输出详尽的业务日志供管理人员排查分析,在管理人员通过排查分析业务日志找出错误之后,管理人员通过管理操作系统操作界面添加用于控制停止业务日志的输出的指令,以使服务器停止额外的业务日志的输出,只输出关键性业务日志与可能出现的异常日志,从而减少业务日志的输出。因此,本申请实施例提供的该方法解决了现有技术存在正常业务处理时业务日志输出较多、日志数据不够全面或线下模拟测试分析难以复现线上错误的问题,实现了在线上业务系统出现错误后输出详尽的业务日志供管理人员排查分析,而又在正常业务处理时尽可能减少业务日志输出,减轻业务系统的负载压力,保障用户体验的技术效果。
图7为本申请实施例提供的一种服务器业务系统功能模块扩展700的示意框图,包括:主体业务模块702,用于处理业务系统中的主体业务,负责业务系统的核心功能,如系统扣费、资源请求等;订阅监听模块704,监听缓存组件(Redis消息发布订阅组件)内发布订阅服务中指定渠道的数据变化,在渠道数据增加后,及时将新增的数据拉取到业务系统中,供热加载控制模块706使用;热加载控制模块706,热加载控制模块706在得到日志指令集后,先校验日志指令集的合法性,校验日志指令集的合法性的方法包括以下一种或其组合:校验目标类文件是否中包含所述日志指令集中的变量;校验日志指令集的格式是否正确;校验日志指令集中的参数个数与目标类文件中的参数个数是否相匹配等,在日志指令集合法的前提下,使用ASM字节码增强技术对目标类文件进行动态改造,生成代理子类文件,并将代理子类文件与目标类文件的映射关系存入内存的代理子类关系映射表708中;代理子类关系映射表708,存储目标类文件与代理子类文件的映射关系,在业务处理时,根据代理子类关系映射表708中存储的映射关系,由代理子类代替目标进行常规业务处理以及额外的业务日志输出。
具体的,订阅监听模块704监听缓存组件内发布订阅服务渠道中的数据量;在监听到发布订阅服务渠道中的数据量发生变化的情况下,订阅监听模块704拉取管理后台新增至发布订阅服务渠道中的日志指令集到热加载控制模块706中;热加载控制模块706根据日志指令集的类型生成或删除代理子类文件,从而增加或停止业务日志的输出。
本申请实施例提供的该方法,订阅监听模块704监听缓存组件内发布订阅服务渠道中的数据量,管理人员通过管理操作系统操作界面针对指定的业务系统添加日志指令集,管理后台将日志指令集发送到缓存组件中(其中,缓存组件可以为Redis消息发布订阅组件),在监听到发布订阅服务渠道中的数据量发生变化的情况下,订阅监听模块704拉取管理后台新增至发布订阅服务渠道中的日志指令集到热加载控制模块706,这样保证了业务系统的服务器可以即时获取管理人员添加的日志指令集。热加载控制模块706根据日志指令集的类型生成或删除代理子类文件,从而增加或停止业务日志的输出。例如,在业务系统中有错误发生的情况下,管理人员通过管理操作系统操作界面添加用于控制增加业务日志的输出的指令,以使服务器输出详尽的业务日志供管理人员排查分析,在管理人员通过排查分析业务日志找出错误之后,管理人员通过管理操作系统操作界面添加用于控制停止业务日志的输出的指令,以使服务器停止额外的业务日志的输出,只输出关键性业务日志与可能出现的异常日志,从而减少业务日志的输出。因此,本申请实施例提供的该方法解决了现有技术存在正常业务处理时业务日志输出较多、日志数据不够全面或线下模拟测试分析难以复现线上错误的问题,实现了在线上业务系统出现错误后输出详尽的业务日志供管理人员排查分析,而又在正常业务处理时尽可能减少业务日志输出,减轻业务系统的负载压力,保障用户体验的技术效果。
可选的,热加载控制模块706接收到日志指令集后,首先校验日志指令集的正确性,日志指令集的正确性包括日志指令集的合法性以及与日志指令集相对应的目标类文件的存在性。
在该实施例中,在订阅监听模块704拉取管理后台新增至发布订阅服务渠道中的日志指令集发送给热加载控制模块706之后,在热加载控制模块706根据日志指令集增加或停止业务日志输出的步骤之前,热加载控制模块706校验日志指令集的正确性。在判断日志指令集不正确的情况下,终止操作,并输出警示性日志,防止将错误的指令集应用到业务系统中,造成业务系统的崩溃;在判断日志指令集正确的情况下,根据日志指令集的类型增加或停止业务日志的输出,保证错误排查定位工作的顺利完成。其中,日志指令集的正确性包括日志指令集的合法性以及与日志指令集相对应的目标类文件的存在性。若日志指令集不合法,则会造成业务系统的崩溃,若与日志指令集相对应的目标类文件不存在,则日志指令集无法应用到业务系统中,因此需要检验日志指令集的合法性以及与日志指令集相对应的目标类文件的存在性。
可选的,热加载控制模块706日志指令集的合法性的方法包括以下一种或其组合:校验目标类文件是否中包含所述日志指令集中的变量;校验日志指令集的格式是否正确;校验日志指令集中的参数个数与目标类文件中的参数个数是否相匹配。
在该实施例中,在热加载控制模块706响应于日志指令集之前需要校验日志指令集的合法性,以保证业务系统的正常运行,校验日志指令集的合法性的方法包括以下一种或其组合:校验目标类文件是否中包含日志指令集中的变量;校验日志指令集的格式是否正确;校验日志指令集中的参数个数与目标类文件中的参数个数是否相匹配。若日志指令集的合法性出现问题,轻则导致该日志指令集无法应用到目标类文件中,从而使热加载控制模块706响应失败,管理人员无法获得日志输出,重则导致业务系统崩溃,这都将影响到用户使用业务系统时的使用体验。因此,在热加载控制模块706响应于日志指令集之前校验日志指令集的合法性,可以降低风险,提升用户使用体验。
可选的,热加载控制模块706识别日志指令集的类型,在日志指令集的类型为增加类型的情况下,热加载控制模块706生成与目标类文件相对应的代理子类文件,以使代理子类文件代替目标类文件处理业务逻辑并输出业务日志;在日志指令集的类型为删除类型的情况下,热加载控制模块706删除目标类文件对应的代理子类文件,以停止输出业务日志。
在该实施例中,日志指令集包含用于指示指令类型(ADD或DELETE)的字段,在热加载控制模块706判断日志指令集正确的前提下,热加载控制模块706通过识别该字段来确定日志指令集的类型为增加类型(ADD)或删除类型(DELETE)。在日志指令集的类型为增加类型的情况下,热加载控制模块706生成与目标类文件相对应的代理子类文件,以使代理子类文件代替目标类文件处理业务逻辑(在主体业务模块702中的功能)并输出业务日志,在日志指令集的类型为删除类型的情况下,热加载控制模块706删除目标类文件对应的代理子类文件,以停止输出业务日志,从而实现了管理人员根据实际需要,在管理后台输入增加类型的日志指令集或删除类型的日志指令集,以完成动态扩充或缩减特定线上运行业务系统的业务日志输出,为线上错误的排查定位提供便利,同时也降低了业务系统的负载。
可选的,热加载控制模块706建立目标类文件与代理子类文件的映射关系,并在代理子类关系映射表708中存储映射关系。
在该实施例中,在热加载控制模块706识别日志指令集为增加类型的指令集并生成与目标类文件相对应的代理子类文件之后,热加载控制模块706建立目标类文件与代理子类文件的映射关系,通过此映射关系可以识别目标类文件与代理子类文件的关系,在处理线上业务时,主体业务模块702可以通过目标类文件查找到代理子类文件,从而使代理子类文件代替目标类文件处理业务逻辑并输出业务日志,实现了在不改变业务处理逻辑的情况下,输出详尽的业务日志。进一步的,需要在代理子类关系映射表708中存储该映射关系,以便主体业务模块702能够在代理子类关系映射表708中查询到该映射关系并应用。
可选的,在热加载控制模块706删除目标类文件对应的代理子类文件之后,热加载控制模块706删除在代理子类关系映射表708中存储的目标类文件与代理子类文件的映射关系。
在该实施例中,热加载控制模块706根据接收到的增加类型的指令生成代理子类文件代替目标类文件处理业务逻辑并输出业务日志之后,管理人员通过排查业务日志快速定位出业务系统错误出现的原因,在解决问题之后,不需要业务系统继续输出业务日志加剧业务系统的负载压力,管理人员输入删除类型的日志指令集,热加载控制模块706根据接收到的删除类型的指令集删除目标类文件对应的代理子类文件,以停止输出业务日志。由于在生成代理子类文件之后,还建立了目标类文件与代理子类文件的映射关系,并将该映射关系存储在代理子类关系映射表708中,在代理子类文件被删除之后,该映射关系失效,为了避免主体业务模块702出现错误及释放代理子类关系映射表708的存储空间,需要将失效的映射关系从代理子类关系映射表708中删除。
可选的,在热加载控制模块706删除目标类文件对应的代理子类文件之后,主体业务模块702恢复目标类文件处理业务逻辑。
在该实施例中,在热加载控制模块706删除代理子类文件与映射关系之后,需要恢复目标类文件处理系统中业务,即恢复主体业务模块702中目标类文件处理业务逻辑,避免业务系统崩溃,影响用户的使用体验。
根据本发明的第二个方面,图8为本申请一个实施例提供的一种日志输出控制系统的示意框图,包括:存储器802、处理器804及存储在存储器802上并可在处理器804上运行的计算机程序,处理器804在执行计算机程序时可以实现上述任一实施例所述的日志输出控制方法。
本发明的实施例,因包括上述任一实施例所述的日志输出控制方法,因此具有所述日志输出控制方法的全部有益效果。
根据本发明的第三个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一实施例所述方法的步骤,因而具备日志输出控制方法的全部技术效果,在此不再赘述。
图9为本申请一个实施例提供的一种日志输出控制系统的部署架构,其中包括:系统管理界面,Redis发布订阅服务和多个服务器。
本申请实施例提供的该方法,根据实际需要,管理人员通过管理系统操作界面针对指定的业务系统添加增加(ADD)类型或删除(DELETE)类型的日志指令集,上述日志指令集在保存操作后,进入Redis发布订阅服务中。一旦Redis发布订阅服务中的数据有所变化,其对接渠道的业务系统则会监听到,进而将日志指令集数据拉取回业务系统,然后由业务系统中的热加载控制模块使用ASM字节码增强技术对日志指令集指向的目标类文件进行动态改造,生成对应的代理子类文件,并把目标类文件与其代理子类文件的映射关系存入内存的映射表中;在后续的业务处理中,将由代理子类文件代替目标类文件进行线上业务处理并丰富业务日志的输出,直到管理系统发出对应的DELETE类性的日志指令集,代理子类文件才会被删除,恢复原来业务系统的逻辑(额外的业务日志不再继续输出)。具体的,在需要排查错误时,管理人员在管理后台添加特定业务系统的日志指令集,从而在特定的业务系统中动态生成代理子类文件来丰富业务日志的输出;在错误定位清晰后,管理人员在管理后台将对应的日志指令集删除,从而在特定的业务系统中卸载对应的代理子类文件,恢复原有的业务逻辑。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种日志输出控制方法,其特征在于,包括:
监听缓存组件内发布订阅服务渠道中的数据量;
在监听到所述发布订阅服务渠道中的数据量发生变化的情况下,拉取管理后台新增至所述发布订阅服务渠道中的日志指令集;
根据所述日志指令集的类型增加或停止业务日志的输出。
2.根据权利要求1所述的日志输出控制方法,其特征在于,在所述根据所述日志指令集增加或停止业务日志输出的步骤之前,还包括:
校验所述日志指令集的正确性;其中,所述日志指令集的正确性包括所述日志指令集的合法性以及与所述日志指令集相对应的目标类文件的存在性;
在判断所述日志指令集不正确的情况下,输出警示性日志;
在判断所述日志指令集正确的情况下,根据所述日志指令集的类型增加或停止所述业务日志的输出。
3.根据权利要求2所述的日志输出控制方法,其特征在于,校验所述日志指令集的合法性的方法包括以下一种或其组合:
校验所述目标类文件是否中包含所述日志指令集中的变量;
校验所述日志指令集的格式是否正确;
校验所述日志指令集中的参数个数与所述目标类文件中的参数个数是否相匹配。
4.根据权利要求2或3所述的日志输出控制方法,其特征在于,所述根据所述日志指令集的类型增加或停止所述业务日志的输出的步骤,具体包括:
识别所述日志指令集的类型,在所述日志指令集的类型为增加类型的情况下,生成与所述目标类文件相对应的代理子类文件,以使所述代理子类文件代替所述目标类文件处理业务逻辑并输出所述业务日志;
在所述日志指令集的类型为删除类型的情况下,删除所述目标类文件对应的所述代理子类文件,以停止输出所述业务日志。
5.根据权利要求4所述的日志输出控制方法,其特征在于,还包括:
建立所述目标类文件与所述代理子类文件的映射关系,并在映射表中存储所述映射关系。
6.根据权利要求4所述的日志输出控制方法,其特征在于,在所述删除所述目标类文件对应的代理子类文件之后,还包括:
删除在映射表中存储的所述目标类文件与所述代理子类文件的映射关系。
7.根据权利要求4所述的日志输出控制方法,其特征在于,在所述删除所述目标类文件对应的代理子类文件之后,还包括:
恢复所述目标类文件处理业务逻辑。
8.根据权利要求4所述的日志输出控制方法,其特征在于,所述生成与所述目标类文件相对应的代理子类文件的步骤包括:
使用内嵌汇编语言关键字的字节码增强技术生成所述目标类文件对应的代理子类文件。
9.一种日志输出控制系统,其特征在于,包括:
存储器,配置为存储可执行指令;
处理器,配置为执行存储的指令以实现如权利要求1至8中任一项所述日志输出控制方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,
所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述日志输出控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811594088.9A CN109766239A (zh) | 2018-12-25 | 2018-12-25 | 日志输出控制方法、系统及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811594088.9A CN109766239A (zh) | 2018-12-25 | 2018-12-25 | 日志输出控制方法、系统及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109766239A true CN109766239A (zh) | 2019-05-17 |
Family
ID=66451545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811594088.9A Pending CN109766239A (zh) | 2018-12-25 | 2018-12-25 | 日志输出控制方法、系统及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766239A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290910A (zh) * | 2020-01-20 | 2020-06-16 | Oppo(重庆)智能科技有限公司 | 日志处理方法、装置、服务器及存储介质 |
CN111897787A (zh) * | 2020-06-17 | 2020-11-06 | 航天信息股份有限公司 | 一种面向业务逻辑实现日志输出的方法及装置 |
CN112306979A (zh) * | 2020-10-30 | 2021-02-02 | 山东浪潮通软信息科技有限公司 | 基于消息队列的日志信息处理方法、装置及可读介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279358A (zh) * | 2013-06-08 | 2013-09-04 | 北京首钢自动化信息技术有限公司 | 一种面向行业应用的解释型业务组件动态构建方法 |
CN103929329A (zh) * | 2014-04-14 | 2014-07-16 | 百度在线网络技术(北京)有限公司 | 日志处理及配置方法、配置服务器、服务端设备和系统 |
US8850263B1 (en) * | 2012-09-14 | 2014-09-30 | Amazon Technologies, Inc. | Streaming and sampling in real-time log analysis |
CN104461844A (zh) * | 2014-10-31 | 2015-03-25 | 大唐移动通信设备有限公司 | 一种基于规则的日志服务方法 |
CN106802858A (zh) * | 2017-01-16 | 2017-06-06 | 广东欧珀移动通信有限公司 | 一种日志动态配置方法、装置及系统 |
CN107102795A (zh) * | 2017-05-31 | 2017-08-29 | 努比亚技术有限公司 | 一种日志记录方法、移动终端以及计算机可读存储介质 |
US20170308454A1 (en) * | 2016-04-26 | 2017-10-26 | International Business Machines Corporation | Adaptive debug tracing for microprocessors |
-
2018
- 2018-12-25 CN CN201811594088.9A patent/CN109766239A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8850263B1 (en) * | 2012-09-14 | 2014-09-30 | Amazon Technologies, Inc. | Streaming and sampling in real-time log analysis |
CN103279358A (zh) * | 2013-06-08 | 2013-09-04 | 北京首钢自动化信息技术有限公司 | 一种面向行业应用的解释型业务组件动态构建方法 |
CN103929329A (zh) * | 2014-04-14 | 2014-07-16 | 百度在线网络技术(北京)有限公司 | 日志处理及配置方法、配置服务器、服务端设备和系统 |
CN104461844A (zh) * | 2014-10-31 | 2015-03-25 | 大唐移动通信设备有限公司 | 一种基于规则的日志服务方法 |
US20170308454A1 (en) * | 2016-04-26 | 2017-10-26 | International Business Machines Corporation | Adaptive debug tracing for microprocessors |
CN106802858A (zh) * | 2017-01-16 | 2017-06-06 | 广东欧珀移动通信有限公司 | 一种日志动态配置方法、装置及系统 |
CN107102795A (zh) * | 2017-05-31 | 2017-08-29 | 努比亚技术有限公司 | 一种日志记录方法、移动终端以及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
美斯坦福IT教育编著: "《SCME初级3G/4G通信工程师 使用JACA语言开发高级应用程序》", 30 May 2011, pages: 63 - 64 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290910A (zh) * | 2020-01-20 | 2020-06-16 | Oppo(重庆)智能科技有限公司 | 日志处理方法、装置、服务器及存储介质 |
CN111290910B (zh) * | 2020-01-20 | 2023-06-23 | Oppo(重庆)智能科技有限公司 | 日志处理方法、装置、服务器及存储介质 |
CN111897787A (zh) * | 2020-06-17 | 2020-11-06 | 航天信息股份有限公司 | 一种面向业务逻辑实现日志输出的方法及装置 |
CN112306979A (zh) * | 2020-10-30 | 2021-02-02 | 山东浪潮通软信息科技有限公司 | 基于消息队列的日志信息处理方法、装置及可读介质 |
CN112306979B (zh) * | 2020-10-30 | 2022-11-01 | 浪潮通用软件有限公司 | 基于消息队列的日志信息处理方法、装置及可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9864586B2 (en) | Code quality improvement | |
WO2018120721A1 (zh) | 用户界面的测试方法、系统、电子装置及计算机可读存储介质 | |
CN109766239A (zh) | 日志输出控制方法、系统及计算机可读存储介质 | |
US10560484B2 (en) | Managing access in one or more computing systems | |
CN109446099A (zh) | 自动化测试用例生成方法、装置、介质及电子设备 | |
US10698683B2 (en) | Merit based inclusion of changes in a build of a software system | |
CN104636130B (zh) | 用于生成事件树的方法和系统 | |
CN112101803A (zh) | 业务流程监控方法、装置、系统、设备和介质 | |
CN110109824B (zh) | 大数据自动回归测试方法、装置、计算机设备和存储介质 | |
CN110222028A (zh) | 一种数据管理方法、装置、设备及存储介质 | |
WO2020155508A1 (zh) | 可疑用户筛选方法、装置、计算机设备及存储介质 | |
CN110334147A (zh) | 一种数据同步方法及装置 | |
CN111523676B (zh) | 辅助机器学习模型上线的方法及装置 | |
US20130246326A1 (en) | Automated contract management | |
WO2023103344A1 (zh) | 一种数据处理方法、装置、设备及存储介质 | |
US20230007894A1 (en) | Intelligent Dynamic Web Service Testing Apparatus in a Continuous Integration and Delivery Environment | |
CN112148762A (zh) | 一种实时数据流的统计方法和装置 | |
US11366642B1 (en) | Change migration: processes for ensuring successful deployment of design changes | |
CN116048987A (zh) | 流程业务的处理方法、装置、电子设备、系统和存储介质 | |
Bourne et al. | Verifying transactional requirements of web service compositions using temporal logic templates | |
CN111930446A (zh) | 一种信息处理方法、装置、终端设备及介质 | |
US11687441B2 (en) | Intelligent dynamic web service testing apparatus in a continuous integration and delivery environment | |
US10044663B2 (en) | System for electronic mail server configuration management | |
CN109658940A (zh) | 更新语音识别资源的方法及系统 | |
KR20190127134A (ko) | 텍스트 기반 상담 품질 관리 시스템 및 방법 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190517 |
|
RJ01 | Rejection of invention patent application after publication |