CN110554942A - 一种监控代码执行的方法和装置 - Google Patents
一种监控代码执行的方法和装置 Download PDFInfo
- Publication number
- CN110554942A CN110554942A CN201810551402.9A CN201810551402A CN110554942A CN 110554942 A CN110554942 A CN 110554942A CN 201810551402 A CN201810551402 A CN 201810551402A CN 110554942 A CN110554942 A CN 110554942A
- Authority
- CN
- China
- Prior art keywords
- monitoring
- code
- executed
- abnormal
- post
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
- G06F11/327—Alarm or error message display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种监控代码执行的方法和装置,涉及计算机技术领域。该方法的一个具体实施方式包括:确定待执行代码中的方法;判断所述方法是否需要前置监控、后置监控和/或异常监控;若是,则对所述方法调用前置监控方法、后置监控方法和/或异常监控方法;运行所述待执行代码,并使用代理运行所述方法。该实施方式能够在不修改系统代码的情况下,对待执行代码运行前后以及出现异常时进行监控,实现代码运行的日志、统计等信息的记录并以邮件等形式进行报警。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种监控代码执行的方法、装置、电子设备和计算机可读介质。
背景技术
软件系统的体量随着功能需求的增加而不断扩大,系统代码在经过多次维护、扩展和修改之后,系统代码的复杂度不断增加,导致规范度或难以达到统一标准,这为系统代码后续的开发、维护等工作带来了很大的困难。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
特别在系统代码的后续开发维护过程中,若出现问题,进行问题排查时,没有参照,系统代码的维护、扩展和修改等操作缺少监控和记录措施。
发明内容
有鉴于此,本发明实施例提供一种监控代码执行的方法和装置,能够在不修改系统代码的情况下,对待执行代码运行前后以及出现异常时进行监控,实现代码运行的日志、统计等信息的记录并以邮件等形式进行报警。
为实现上述目的,根据本发明实施例的一个方面,提供了一种监控代码执行的方法,包括:确定待执行代码中的方法;判断所述方法是否需要前置监控、后置监控和/或异常监控;若是,则对所述方法调用前置监控方法、后置监控方法和/或异常监控方法;运行所述待执行代码,并使用代理运行所述方法。
可选地,判断所述方法是否需要前置监控、后置监控和/或异常监控之前,所述方法还包括:确定所述方法是否被代理;若是,则确定所述方法是否需要前置监控、后置监控和/或异常监控;若否,则发送代理请求。
可选地,对所述方法调用前置监控方法、后置监控方法和/或异常监控方法时,包括:遍历所述方法对应的输出类别列表,对所述输出类别列表中的预设类别调用所述前置监控方法、所述后置监控方法和/或所述异常监控方法。
可选地,所述前置监控方法、所述后置监控方法或所述异常监控方法至少包括日志输出、统计输出和提醒输出其中之一。
为实现上述目的,根据本发明实施例的另一个方面,提供了一种监控代码执行的装置,包括:验证模块,用于确定待执行代码中的方法;判断模块,用于判断所述方法是否需要前置监控、后置监控和/或异常监控;调用模块,用于所述判断模块确定所述方法需要前置监控、后置监控和/或异常监控时,对所述方法调用前置监控方法、后置监控方法和/或异常监控方法;运行模块,用于运行所述待执行代码,并使用代理运行所述方法。
可选地,所述装置还包括:代理模块,用于在所述判断模块确定所述方法是否需要前置监控、后置监控和/或异常监控之前,确定所述方法是否被代理;所述判断模块还用于,在所述代理模块确定所述方法被代理之后,确定所述方法是否需要前置监控、后置监控和/或异常监控;所述代理模块还用于,当所述方法未被代理时,发送代理请求。
可选地,所述调用模块还用于:遍历所述方法对应的输出类别列表,对所述输出类别列表中的预设类别调用所述前置监控方法、所述后置监控方法和/或所述异常监控方法。
可选地,所述前置监控方法、所述后置监控方法或所述异常监控方法至少包括日志输出、统计输出和提醒输出其中之一。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现一种监控代码执行的方法中任一所述的方法。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被一个或多个处理器执行时实现一种监控代码执行的方法中任一所述的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用对使用代理运行的代码进行前置监控、后置监控和/或异常监控的技术手段,所以克服了代码修改混杂、规范度差和发现问题排查困难的技术问题,进而达到在不修改系统代码的情况下监控代码运行的技术效果。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种监控代码执行的方法的主要步骤的示意图;
图2是根据本发明实施例的一个优选实施方式的流程示意图;
图3是根据本发明实施例的一种监控代码执行的装置的主要部分的示意图;
图4是本发明实施例可以应用于其中的示例性系统架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的一种监控代码执行的方法的主要步骤的示意图,如图1所示:
步骤S101表示确定待执行代码中的方法;此步骤的目的是确定待执行的代码中所使用的实现方法。可根据预设的方法库直接获取待执行代码中的方法的名称(即方法名);也可根据代码中的标注信息等获取待执行代码中所使用的方法的名称。例如待执行代码Test里包括方法setValue1和setValue2,可根据标注中的name获取到方法名“setValue1”和“setValue2”。还可以根据代码的编译习惯确定待执行代码中使用的方法。
步骤S102表示判断所述方法是否需要前置监控、后置监控和/或异常监控;前置监控表示在待执行代码运行之前进行监控。可将需要进行前置监控的方法所对应的方法名保存在预设的方法名列表中,例如待执行代码Test里包括方法setValue1和setValue2,而需要进行前置监控的方法名列表中只包括了setValue1的方法名“setValue1”,所以在setValue1方法执行之前对setValue1进行监控。进一步地,需要进行前置监控的方法名列表可以人为进行修改,增加或删除其中的方法名,方法名可以是代码库中已有的方法名,也可以是自定义方法的方法名。后置监控表示在待执行代码运行完毕之后进行监控。与前置监控方法同理,可将需要进行后置监控的方法所对应的方法名保存在预设的方法名列表中,例如待执行代码Test里包括方法setValue1和setValue2,而需要进行后置监控的方法名列表中只包括了setValue1的方法名“setValue1”,所以需要在setValue1方法运行完毕之后对setValue1方法进行监控。进一步地,需要进行后置监控的方法名列表可以人为进行修改,增加或删除其中的方法名,方法名可以是代码库中已有的方法名,也可以是自定义方法的方法名。异常监控表示在待执行代码在运行过程中,对异常进行监控;如果出现异常,会发出异常提醒或产生异常值,此时可根据异常提醒或异常值调用异常监控方法。更进一步地,当判断所述方法不需要进行前置监控、后置监控和/或时,可再发送监控请求,提示是否将该方法存入预设的方法名列表中。
判断所述方法是否需要前置监控、后置监控和/或异常监控之前,所述方法还包括:确定所述方法是否被代理;若是,则确定所述方法是否需要前置监控、后置监控和/或异常监控;若否,则发送代理请求。即对待执行代码进行监控的前提是待执行代码中的方法使用代理运行。代理(Proxy)是一种设计模式,可提供对目标对象另外的访问方式;即通过代理对象访问目标对象。这样做的好处是可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。可在不修改已经写好的代码或者方法的前提下,对代码或方法进行扩展或修改等操作。多种编程语言中都可实现代理模式,如C++(一种面向对象的设计语言,C++是C语言的继承)、Java(一种面向对象的编程语言)和JavaScript(一种直译式脚本语言)等。以Java语言环境为例,可采用公共代理类对目标类进行代理封装,也可以不封装,例如采用Java的动态代理实现,使用invoke方法(一种调用方法)作为代理的目标类对象(即待执行代码)的入口,其中目标类对象(即待执行代码)中包括各种方法,以及其对应的方法名。确定所述方法是否被代理可通过多种方式,例如可向上层代码或服务端等发送请求信息;或可向待执行代码本身添加代理标识来表明待执行代码是否被代理。进一步地,若所述方法没有被代理,还可以向服务端或程序员发送代理请求,申请使用代理运行所述方法,以便能对该方法进行监控。更进一步地,确定所述方法是否被代理的步骤可以在待执行代码运行过程中的任意时间进行,若发现所述方法未被代理,则发送异常提醒,目的是进一步确定所述方法是否被代理。
步骤S103表示若所述方法需要前置监控、后置监控和/或异常监控,则对所述方法调用前置监控方法、后置监控方法和/或异常监控方法;其中,前置监控方法在运行待执行代码之前被触发,后置监控方法在运行待执行代码完毕之后被触发,异常监控方法在运行待执行代码过程中出现异常时被触发。所以前置监控方法、后置监控方法和/或异常监控方法也可在被触发之前进行调用。
对所述方法调用前置监控方法、后置监控方法和/或异常监控方法时,包括:遍历所述方法对应的输出类别列表,对所述输出类别列表中的预设类别调用所述前置监控方法、所述后置监控方法和/或所述异常监控方法。其中,输出类别是指运行的待执行代码在运行前后及发生异常时所输出的数据的类别,类别的划分是可以包括多种形式的,可以是根据数据本身的类型进行划分,如预设类别是浮点型数据,则对运行待执行代码输出的浮点型数据进行监控即可;还可以根据数据的输出接口进行划分,如预设类别是通过接口A进行输出的,则对接口A输出的数据进行监控;还可以根据数据的值进行划分,如预设类别是值为0的异常数据,则对输出的所有值为0的数据进行监控。进一步地,预设类别还包括多种形式的组合,如预设类别可以为接口A输出的浮点型数据。
所述前置监控方法、所述后置监控方法或所述异常监控方法至少包括日志输出、统计输出和提醒输出其中之一。日志输出是指在将监控的内容以日志的形式保存并输出,其中可包括待执行方法的各项输入参数、运行结果、运行时间、执行人员、执行主机IP等等相关信息,可输出到文件,也可输出到数据库等;统计输出是指将监控的内容进行统计后输出,可包括运行时长、异常次数等信息;提醒输出是指将预设的监控内容输出到指定的地址,例如将监控到的异常内容以电子邮件的形式发送至管理员邮箱。
步骤S104表示运行所述待执行代码,并使用代理运行所述方法。对待执行代码调用监控方法之后,就可以运行待执行代码,以得到执行结果。
图2是根据本发明实施例的一个优选实施方式的流程示意图,如图2所示:
①在java运行环境中,将待执行代码中的方法名与代码库中的方法名进行比对,确定待执行代码中所使用的方法;例如[目标类1;方法1,方法2,方法3;代理类1;日志输出实现类,邮件输出实现类],其中目标类1表示被代理的类,即目标类1中的方法是被代理的,其中的方法1、方法2和方法3是需要进行监控的方法,代理类1为公共的代理类实现,日志输出实现类和邮件输出实,现类为对应的监控方法。
②通过判断待执行代码中的代理标识确定其中的方法是否被代理,当代理标识为“False”时表明该待执行代码中的方法没有被代理,发送代理请求;当代理标识为“True”时表明待执行代码中的方法被代理,需要进行监控;
③将待执行代码中的方法名与预设的需要监控的方法名列表进行比对,确定该方法需要进行前置监控、后置监控和/或异常监控;若需要进行监控,则继续监控流程;否则,发送监控请求;
④当该方法需要前置监控时,调用前置监控方法并触发;当该方法需要异常监控时,调用异常监控方法;
⑤运行待执行代码;当运行出现异常时,触发异常监控方法;
⑥运行完毕后,调用后置监控方法并触发,结束监控流程。
图3是根据本发明实施例的一种监控代码执行的装置300的主要部分的示意图,如图3所示:
验证模块301,用于确定待执行代码中的方法;目的是确定待执行的代码中所使用的实现方法。可根据预设的方法库直接获取待执行代码中的方法的名称(即方法名);也可根据代码中的标注信息等获取待执行代码中所使用的方法的名称。例如待执行代码Test里包括方法setValue1和setValue2,可根据标注中的name获取到方法名“setValue1”和“setValue2”。还可以根据代码的编译习惯确定待执行代码中使用的方法。
判断模块302,用于判断所述方法是否需要前置监控、后置监控和/或异常监控;前置监控表示在待执行代码运行之前进行监控。可将需要进行前置监控的方法所对应的方法名保存在预设的方法名列表中,例如待执行代码Test里包括方法setValue1和setValue2,而需要进行前置监控的方法名列表中只包括了setValue1的方法名“setValue1”,所以在setValue1方法执行之前对setValue1进行监控。进一步地,需要进行前置监控的方法名列表可以人为进行修改,增加或删除其中的方法名,方法名可以是代码库中已有的方法名,也可以是自定义方法的方法名。后置监控表示在待执行代码运行完毕之后进行监控。与前置监控方法同理,可将需要进行后置监控的方法所对应的方法名保存在预设的方法名列表中,例如待执行代码Test里包括方法setValue1和setValue2,而需要进行后置监控的方法名列表中只包括了setValue1的方法名“setValue1”,所以需要在setValue1方法运行完毕之后对setValue1方法进行监控。进一步地,需要进行后置监控的方法名列表可以人为进行修改,增加或删除其中的方法名,方法名可以是代码库中已有的方法名,也可以是自定义方法的方法名。异常监控表示在待执行代码在运行过程中,对异常进行监控;如果出现异常,会发出异常提醒或产生异常值,此时可根据异常提醒或异常值调用异常监控方法。更进一步地,当判断所述方法不需要进行前置监控、后置监控和/或时,可再发送监控请求,提示是否将该方法存入预设的方法名列表中。
调用模块303,用于判断模块302确定所述方法需要前置监控、后置监控和/或异常监控时,对所述方法调用前置监控方法、后置监控方法和/或异常监控方法;其中,前置监控方法在运行待执行代码之前被触发,后置监控方法在运行待执行代码完毕之后被触发,异常监控方法在运行待执行代码过程中出现异常时被触发。所以前置监控方法、后置监控方法和/或异常监控方法也可在被触发之前进行调用。
调用模块303还用于:遍历所述方法对应的输出类别列表,对所述输出类别列表中的预设类别调用所述前置监控方法、所述后置监控方法和/或所述异常监控方法。其中,输出类别是指运行的待执行代码在运行前后及发生异常时所输出的数据的类别,类别的划分是可以包括多种形式的,可以是根据数据本身的类型进行划分,如预设类别是浮点型数据,则对运行待执行代码输出的浮点型数据进行监控即可;还可以根据数据的输出接口进行划分,如预设类别是通过接口A进行输出的,则对接口A输出的数据进行监控;还可以根据数据的值进行划分,如预设类别是值为0的异常数据,则对输出的所有值为0的数据进行监控。进一步地,预设类别还包括多种形式的组合,如预设类别可以为接口A输出的浮点型数据。
运行模块304,用于运行所述待执行代码,并使用代理运行所述方法。对待执行代码调用监控方法之后,就可以运行待执行代码,以得到执行结果。
装置300还包括:代理模块,用于在判断模块302确定所述方法是否需要前置监控、后置监控和/或异常监控之前,确定所述方法是否被代理;判断模块302还用于,在代理模块确定所述方法被代理之后,判断所述方法是否需要前置监控、后置监控和/或异常监控;代理模块还用于,当所述方法未被代理时,发送代理请求。即对待执行代码进行监控的前提是待执行代码中的方法使用代理运行。代理(Proxy)是一种设计模式,可提供对目标对象另外的访问方式;即通过代理对象访问目标对象。这样做的好处是可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。可在不修改已经写好的代码或者方法的前提下,对代码或方法进行扩展或修改等操作。多种编程语言中都可实现代理模式,如C++(一种面向对象的设计语言,C++是C语言的继承)、Java(一种面向对象的编程语言)和JavaScript(一种直译式脚本语言)等。以Java语言环境为例,可采用公共代理类对目标类进行代理封装,也可以不封装,例如采用Java的动态代理实现,使用invoke方法(一种调用方法)作为代理的目标类对象(即待执行代码)的入口,其中目标类对象(即待执行代码)中包括各种方法,以及其对应的方法名。确定所述方法是否被代理可通过多种方式,例如可向上层代码或服务端等发送请求信息;或可向待执行代码本身添加代理标识来表明待执行代码是否被代理。进一步地,若所述方法没有被代理,还可以向服务端或程序员发送代理请求,申请使用代理运行所述方法,以便能对该方法进行监控。更进一步地,代理模块可以在待执行代码运行过程中的任意时间确定所述方法是否被代理,若发现所述方法未被代理,则发送异常提醒,目的是进一步确定所述方法是否被代理。
所述前置监控方法、所述后置监控方法或所述异常监控方法至少包括日志输出、统计输出和提醒输出其中之一。日志输出是指在将监控的内容以日志的形式保存并输出,其中可包括待执行方法的各项输入参数、运行结果、运行时间、执行人员、执行主机IP等等相关信息,可输出到文件,也可输出到数据库等;统计输出是指将监控的内容进行统计后输出,可包括运行时长、异常次数等信息;提醒输出是指将预设的监控内容输出到指定的地址,例如将监控到的异常内容以电子邮件的形式发送至管理员邮箱。
图4示出了可以应用本发明实施例的一种监控代码执行的方法或一种监控代码执行的装置的示例性系统架构400。
如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息)反馈给终端设备。
需要说明的是,本发明实施例所提供的一种监控代码执行的方法一般由服务器405执行,相应地,一种监控代码执行的装置一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图5所示为适于用来实现本发明实施例的终端设备的计算机系统500的结构示意图。图5所示的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文步骤图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行步骤图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质包括计算机可读信号介质或计算机可读存储介质,或者是上述两者的任意组合。计算机可读存储介质包括但不限于电、磁、光、电磁、红外线、半导体的系统、装置或器件,或者上述内容的任意组合。计算机可读存储介质具体包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述内容的任意组合。在本发明中,计算机可读存储介质包括任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用;计算机可读的信号介质包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码,这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述信号的任意组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF(射频)等,或者上述介质的任意组合。
附图中的步骤图或框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作,步骤图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以并行地执行,有时也可以按相反的顺序执行,其执行顺序依所涉及的功能而定。也要注意的是,框图或步骤图中的每个方框以及其组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块或单元也可以设置在处理器中,例如,可以描述为:一种处理器包括验证模块、判断模块、调用模块和运行模块。其中,这些模块或单元的名称在某种情况下并不构成对该模块或单元本身的限定,例如,验证模块还可以被描述为“用于确定待执行代码中的方法的模块”。
另一方面,本发明实施例还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:确定待执行代码中的方法;判断所述方法是否需要前置监控、后置监控和/或异常监控;若是,则对所述方法调用前置监控方法、后置监控方法和/或异常监控方法;运行所述待执行代码,并使用代理运行所述方法。
根据本发明实施例的技术方案,能够在不修改系统代码的情况下,对待执行代码运行前后以及出现异常时进行监控,实现代码运行的日志、统计等信息的记录并以邮件等形式进行报警。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种监控代码执行的方法,其特征在于,包括:
确定待执行代码中的方法;
判断所述方法是否需要前置监控、后置监控和/或异常监控;
若是,则对所述方法调用前置监控方法、后置监控方法和/或异常监控方法;
运行所述待执行代码,并使用代理运行所述方法。
2.根据权利要求根据权利要求1所述的方法,其特征在于,判断所述方法是否需要前置监控、后置监控和/或异常监控之前,所述方法还包括:
确定所述方法是否被代理;
若是,则判断所述方法是否需要前置监控、后置监控和/或异常监控;
若否,则发送代理请求。
3.根据权利要求1所述的方法,其特征在于,对所述方法调用前置监控方法、后置监控方法和/或异常监控方法时,包括:遍历所述方法对应的输出类别列表,对所述输出类别列表中的预设类别调用所述前置监控方法、所述后置监控方法和/或所述异常监控方法。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述前置监控方法、所述后置监控方法或所述异常监控方法至少包括日志输出、统计输出和提醒输出其中之一。
5.一种监控代码执行的装置,其特征在于,包括:
验证模块,用于确定待执行代码中的方法;
判断模块,用于判断所述方法是否需要前置监控、后置监控和/或异常监控;
调用模块,用于所述判断模块确定所述方法需要前置监控、后置监控和/或异常监控时,对所述方法调用前置监控方法、后置监控方法和/或异常监控方法;
运行模块,用于运行所述待执行代码,并使用代理运行所述方法。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
代理模块,用于在所述判断模块确定所述方法是否需要前置监控、后置监控和/或异常监控之前,确定所述方法是否被代理;
所述判断模块还用于,在所述代理模块确定所述方法被代理之后,判断所述方法是否需要前置监控、后置监控和/或异常监控;
所述代理模块还用于,当所述方法未被代理时,发送代理请求。
7.根据权利要求5所述的装置,其特征在于,所述调用模块还用于:遍历所述方法对应的输出类别列表,对所述输出类别列表中的预设类别调用所述前置监控方法、所述后置监控方法和/或所述异常监控方法。
8.根据权利要求5-7中任一所述的装置,其特征在于,所述前置监控方法、所述后置监控方法或所述异常监控方法至少包括日志输出、统计输出和提醒输出其中之一。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被一个或多个处理器执行时实现如权利要求1-4中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810551402.9A CN110554942A (zh) | 2018-05-31 | 2018-05-31 | 一种监控代码执行的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810551402.9A CN110554942A (zh) | 2018-05-31 | 2018-05-31 | 一种监控代码执行的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110554942A true CN110554942A (zh) | 2019-12-10 |
Family
ID=68735036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810551402.9A Pending CN110554942A (zh) | 2018-05-31 | 2018-05-31 | 一种监控代码执行的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110554942A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268242A (zh) * | 2020-02-17 | 2021-08-17 | 北京达佳互联信息技术有限公司 | 代码编译时长确定方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101320350A (zh) * | 2008-07-17 | 2008-12-10 | 金蝶软件(中国)有限公司 | 一种性能监控方法及装置 |
CN102981856A (zh) * | 2012-11-28 | 2013-03-20 | 南开大学 | 基于网络的程序计算结果存储与检索方法及系统 |
CN106560831A (zh) * | 2015-12-31 | 2017-04-12 | 哈尔滨安天科技股份有限公司 | 一种恶意代码绕过主动防御的发现方法及系统 |
US20180065575A1 (en) * | 2016-09-06 | 2018-03-08 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Monitoring method and apparatus |
-
2018
- 2018-05-31 CN CN201810551402.9A patent/CN110554942A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101320350A (zh) * | 2008-07-17 | 2008-12-10 | 金蝶软件(中国)有限公司 | 一种性能监控方法及装置 |
CN102981856A (zh) * | 2012-11-28 | 2013-03-20 | 南开大学 | 基于网络的程序计算结果存储与检索方法及系统 |
CN106560831A (zh) * | 2015-12-31 | 2017-04-12 | 哈尔滨安天科技股份有限公司 | 一种恶意代码绕过主动防御的发现方法及系统 |
US20180065575A1 (en) * | 2016-09-06 | 2018-03-08 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Monitoring method and apparatus |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268242A (zh) * | 2020-02-17 | 2021-08-17 | 北京达佳互联信息技术有限公司 | 代码编译时长确定方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11411871B2 (en) | Augmenting functionality in distributed systems with payload headers | |
CN111190888A (zh) | 一种管理图数据库集群的方法和装置 | |
CN113900834B (zh) | 基于物联网技术的数据处理方法、装置、设备及存储介质 | |
CN110795315A (zh) | 监控业务的方法和装置 | |
CN111427701A (zh) | 一种工作流引擎系统和业务处理方法 | |
US9563485B2 (en) | Business transaction context for call graph | |
CN114153703A (zh) | 微服务的异常定位方法、装置、电子设备和程序产品 | |
US9973410B2 (en) | Notifying original state listeners of events in a domain model | |
CN113157480A (zh) | 错误信息处理方法、装置、存储介质以及终端 | |
CN110554942A (zh) | 一种监控代码执行的方法和装置 | |
CN111414154A (zh) | 前端开发的方法、装置、电子设备和存储介质 | |
CN108628909B (zh) | 信息推送方法和装置 | |
CN114721740A (zh) | 消息触发方法、装置、设备及存储介质 | |
CN112532734B (zh) | 报文敏感信息检测方法和装置 | |
CN113762910A (zh) | 一种单据监控方法和装置 | |
CN113010174A (zh) | 业务监控的方法和装置 | |
CN112783903A (zh) | 生成更新日志的方法和装置 | |
CN111176982A (zh) | 一种测试界面生成方法和装置 | |
CN110262756B (zh) | 用于缓存数据的方法和装置 | |
CN113495747B (zh) | 一种灰度发布方法和装置 | |
CN113377629A (zh) | 监控用户异常编码的方法和装置 | |
CN114090073A (zh) | 接口信息提取方法、装置、电子设备及存储介质 | |
CN113778350A (zh) | 一种日志打印方法和装置 | |
CN113778847A (zh) | 测试报告生成方法和装置 | |
CN112134755A (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 |