CN105607878A - 一种日志打印方法及其设备 - Google Patents
一种日志打印方法及其设备 Download PDFInfo
- Publication number
- CN105607878A CN105607878A CN201510782884.5A CN201510782884A CN105607878A CN 105607878 A CN105607878 A CN 105607878A CN 201510782884 A CN201510782884 A CN 201510782884A CN 105607878 A CN105607878 A CN 105607878A
- Authority
- CN
- China
- Prior art keywords
- daily record
- rule
- printing
- application server
- 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.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种用于校验日志打印规则的方法、基于日志的调试方法、一种日志打印方法及其设备。校验日志打印规则的方法包括从用户接收日志打印规则;校验所接收到的日志打印规则;使校验通过的日志打印规则生效;以及向日志打印规则对应的应用服务器发送已生效的日志打印规则,以由应用服务器根据日志打印规则打印日志。上述方法和设备和系统解决了调试基于Java的系统时所遇到的花大量时间去定位问题的技术问题,提高了定位问题的时间和准确度,减少了项目出现问题的风险。
Description
技术领域
本发明涉及系统调试领域,具体涉及一种日志打印方法及其设备。
背景技术
众所周知,java语言是一种先编译再执行的面向对象的语音。这种特性决定了java语言不是一种动态语音。在日常的生产线上环境经常会出现这样一种现象:线上已经出现bug,但是研发人员需要花大量时间去定位问题。如果是日志打印不及时,可能基本无法定位bug。此时需要重新在代码中加入关键点日志,提交代码,重新上线启动服务器以寻找bug。但是这个时候,内存中的对象信息通常已经消失,需要重新回忆操作步骤,使得bug复现,然后再根据日志来定位问题,导致这个过程非常耗时而且低效。
因此需要一种动态日志打印方法,使得在发现问题的时候,不需要重启机器而能够很快地定位问题。
发明内容
为了解决上述问题,本发明实施例提供了一种日志打印方法及其设备。
根据本发明的一个方案,提供了一种用于校验日志打印规则的方法,包括:从用户接收日志打印规则;校验所接收到的日志打印规则;使校验通过的日志打印规则生效;以及向所述日志打印规则对应的应用服务器发送已生效的日志打印规则,以由所述应用服务器根据所述日志打印规则打印日志。
根据本发明的第二方案,提供了一种基于日志的调试方法,包括:在需要进行调试时,向规则管理服务器发送涉及所调试系统的日志打印规则;从所述所调试系统所在的应用服务器接收根据所述日志打印规则打印的日志,其中,所述日志打印规则经所述规则管理服务器校验成功并生效之后发送给所述应用服务器;以及分析接收到的日志,寻找所述所调试系统中存在的问题。
根据本发明的第三方案,提供了一种日志打印方法,包括:从规则管理服务器接收经所述规则管理服务器校验成功并生效的日志打印规则;以及根据所述日志打印规则打印日志。
根据本发明的第四方案,提供了一种规则管理服务器,包括:输入接口,用于从用户接收日志打印规则;校验单元,用于校验所接收到的日志打印规则;日志生效单元,用于使校验通过的日志打印规则生效;以及输出接口,用于向所述日志打印规则对应的应用服务器发送已生效的日志打印规则,以由所述应用服务器根据所述日志打印规则打印日志。
根据本发明的第五方案,提供了一种客户端设备,包括:发送单元,用于在需要进行调试时,向规则管理服务器发送涉及所调试系统的日志打印规则;接收单元,用于从所述所调试系统所在的应用服务器接收根据所述日志打印规则打印的日志,其中,所述日志打印规则经所述规则管理服务器校验成功并生效之后发送给所述应用服务器;以及分析单元,用于分析接收到的日志,寻找所述所调试系统中存在的问题。
根据本发明的第五方案,提供了一种应用服务器,包括:接收单元,用于从规则管理服务器接收经所述规则管理服务器校验成功并生效的日志打印规则;以及打印单元,用于根据所述日志打印规则打印日志。
基于上述方法和设备,在任何情况下,研发人员都可以自定义要打印的服务器日志,通过远端提交日志打印规则代码。就可以查看并且打印当前系统的日志。这样避免了传统方式直接提交日志代码到服务器,然后重新启动。该方案有效地保留了最新的运行数据,提高了定位问题的时间和准确度,减少了项目出现问题的风险。
附图说明
通过下面结合附图对发明进行的详细描述,将使本发明的上述特征和优点更加明显,其中:
图1是示出根据本发明的实施例的用于校验日志打印规则的方法的示意性流程图;
图2是示出根据本发明的实施例的基于日志的调试方法的示意性流程图;
图3是示出根据本发明的实施例的日志打印方法的示意性流程图;
图4是示出根据本发明的实施例的规则管理服务器的示意性框图;
图5是示出根据本发明的实施例的客户端设备的示意性框图;
图6是示出根据本发明的实施例的应用服务器的示意性框图;以及
图7是根据本发明的实施例的调试方法的具体实现的示意性流程图。
具体实施方式
下面,参考附图详细说明本发明的优选实施方式。在附图中,虽然示于不同的附图中,但相同的附图标记用于表示相同的或相似的组件。为了清楚和简明,包含在这里的已知的功能和结构的详细描述将被省略,以避免使本发明的主题不清楚。
图1示出了根据本发明的实施例的用于校验日志打印规则的方法。如图1所示,该方法包括:步骤110,从用户接收日志打印规则;步骤120,校验所接收到的日志打印规则;步骤130,使校验通过的日志打印规则生效;以及步骤140,向日志打印规则对应的应用服务器发送已生效的日志打印规则,以由应用服务器根据日志打印规则打印日志。
在图1所示的方法中,应用服务器是可以是基于Java的应用服务器。
在本发明的一些示例中,可通过zookeeper服务器执行图1所示的方法。
图2示出了根据本发明实施例的基于日志的调试方法。如图2所示,该方法包括:步骤210,在需要进行调试时,向规则管理服务器发送涉及所调试系统的日志打印规则;步骤220,从所调试系统所在的应用服务器接收根据日志打印规则打印的日志,其中,所述日志打印规则经规则管理服务器校验成功并生效之后发送给应用服务器;以及步骤230,分析接收到的日志,寻找所调试系统中存在的问题。
在步骤230之后,用户便可对寻找到的问题进行及时处理(未示出)。
在本发明的一些示例中,日志可包含打印日志时应用服务器的内存中的至少部分信息。此时,步骤230中分析接收到的日志包括:从接收到的日志中提取内存中的信息,以分析所调试系统中存在的问题。当然,在一些情况下,日志也可以包含打印日志时应用服务器的内存中的所有信息。用户可根据需要来预先设定或动态设定要包含的信息。
在本发明的一些示例中,上述内存中的至少部分信息可包括类对象信息、jvm、硬件信息等等。
在本发明的一些示例中,在发送日志打印规则之前还可包括编写日志打印规则的步骤。
在本发明的一些示例中,还可以接收规则管理服务器反馈的校验结果。在校验结果指示校验失败的情况下,可重写编写日志打印规则。
图3示出了根据本发明实施例的日志打印方法。如图3所示,该方法包括:步骤310,从规则管理服务器接收经该规则管理服务器校验成功并生效的日志打印规则;以及步骤320,根据日志打印规则打印日志。
在本发明的一些示例中,步骤320中根据日志打印规则打印日志还可包括:根据日志打印规则同步用户规则配置;根据用户规则配置进行代码动态部署;以及基于动态部署的代码打印日志。
在本发明的一些示例中,如前所述,日志包含打印日志时应用服务器的内存中的至少部分信息。
图4至图6示出了用于分别执行图1至图3所示方法的设备的示意性框图。其中,图4示出了用于执行图1所示方法的规则管理服务器的示意性框图。如图4所示,根据本发明实施例的规则管理服务器包括:输入接口410,用于从用户接收日志打印规则;校验单元420,用于校验所接收到的日志打印规则;日志生效单元430,用于使校验通过的日志打印规则生效;以及输出接口440,用于向日志打印规则对应的应用服务器发送已生效的日志打印规则,以由应用服务器根据该日志打印规则打印日志。
在一些示例中,应用服务器可以是基于Java的应用服务器。
根据本发明的一些示例,图4中示出的规则管理服务器还可包括反馈单元450,用于向用户反馈校验单元430的日志打印规则校验结果。
根据本发明的一些示例,图4中示出的规则管理服务器是zookeeper服务器。
图5示出了根据本发明实施例的客户端设备。如图5所示,该客户端设备包括:发送单元510,用于在需要进行调试时,向规则管理服务器发送涉及所调试系统的日志打印规则;接收单元520,用于从所调试系统所在的应用服务器接收根据日志打印规则打印的日志,其中,日志打印规则经规则管理服务器校验成功并生效之后发送给应用服务器;以及分析单元530,用于分析接收到的日志,寻找所调试系统中存在的问题。其中,所调试系统是基于Java的系统。
在本发明的一些示例中,如上所述,日志包含打印日志时应用服务器的内存中的至少部分信息。分析单元530可根据从接收到的日志中提取的应用服务器的内存中的信息,分析所调试系统中存在的问题。
在本发明的一些示例中,从接收到的日志中提取信息的动作可由分析单元530完成。而在另一些示例中,可由另一提取单元(未示出)来完成该提取动作。
在本发明的一些示例中,图5所示的客户端设备还可包括规则编写单元540,用于编写日志打印规则。
在本发明的一些示例中,接收单元520还可接收规则管理服务器反馈的校验结果,以及规则编写单元540还可在校验结果指示校验失败的情况下重写编写日志打印规则。
需要注意的是,虽然在本文中将图5所示的设备称为客户端设备,然而该客户端设备可以是包括图5所示模块/单元或可实现图2所示方法的任何设备,且在不同的情景下可被称为终端、服务器、用户操作设备等等。本发明不对其进行限定。
图6示出了根据本发明实施例的应用服务器。如图6所示,应用服务器包括接收单元610,用于从规则管理服务器接收经规则管理服务器校验成功并生效的日志打印规则;以及打印单元620,用于根据日志打印规则打印日志。
在本发明的一些示例中,图6所示的应用服务器还可包括规则配置单元630,用于根据所述日志打印规则同步用户规则配置;以及代码部署单元640,用于根据所述用户规则配置进行代码动态部署。打印单元620还可基于该动态部署的代码打印日志。
在本发明的一些实施例中,图6所示的应用服务器还可包括用于发送所打印的日志的发送单元650。
图6所示的应用服务器还可包括存储器,例如用于存储该应用服务器上运行的各种系统的各种参数的内存。该各种参数可包括类对象信息、jvm、硬件信息以及本领域周知的其他参数信息。如上所述,日志可包含打印日志时该应用服务器的内存中的至少部分信息。
需要注意的是,图4至图6中所描述的设备仅是为了使本领域技术人员更清楚地理解本发明而作的图,其中省略了一些对理解本发明不必要的模块/组件,本发明的保护范围不应受这些附图的具体细节所限制。例如,实际的设备中可以包括更多的模块/组件,如显示器、操作维护接口等等。再例如,图4至图6中所示的单元/接口可由实际计算机中的一个或多个处理器/模块来实现。该模块可以是软件、硬件、固件或本领域技术人员熟知的其他方式。本发明不对这些进行限制。
下面基于图7对上述方法和设备进行更详细的描述。图7示出了根据本发明实施例的调试方法的具体实现的示意性流程图。在图7中使用zookeeper服务器作为规则管理服务器的具体示例。然而需要理解的是,可使用现有或将来开发的任何可实现分布式系统异步控制方式的设备来替代图7中所示的zookeeper服务器。本发明不对此进行限制。
如图7中所示,首先,用户可在本地的客户端设备上编写日志打印规则。在一些示例中,用户可在本地客户端设备上提供的通用界面上配置自己编写好的日志打印规则,并进行提交。提交后,本地系统会根据配置好的规则生成相应的代码,并且代码上传到zookeeper服务器。在这些示例中,利用客户端设备上提供的通用界面来实现图5中所示的发送单元510、接收单元520、规则编写单元540等,然而也可以存在其他配置,例如通过其他的一个或多个界面/程序/模块来实现这些单元的功能。
zookeeper服务器利用输入接口410接收本地客户端设备提交的日志打印规则(或其代码),并利用校验单元420根据校验规则进行校验。这里的校验规则可包括是否有非英文和/或非法字符,简单的语义格式校验,尝试自动热部署时是否有类加载异常,或其他本领域中常用的校验规则。如果检验结果指示校验通过,zookeeper服务器利用日志生效单元430使日志打印规则生效,且在已存在生效的日志打印规则的情况下,更新该已生效的日志打印规则,并通过输出接口440通知应用服务器。如果校验结果指示校验未通过,则zookeeper服务器通过反馈单元450通过客户端设备规则校验失败,提示用户重新编写日志打印规则,例如通过通用界面来编写。
应用服务器可利用规则配置单元630通过监听模式向zookeeper服务器同步当前最新的日志代码。每次访问会通过版本号来比对当前是否是最新版本。如果版本号过期,就会同步最新的日志打印规则代码。
在更新完成,即在代码发生改变后,应用服务器可通过代码部署单元640动态加载代码到本地。在本发明的一些实施例中,可通过Groovy语言来编译最新的代码,并且在不需要重启的情况下,将代码直接部署到本地,生成新的对象。由于使用相同的类加载器加载,因此对象在相同的堆内存中,可以直接访问内存中对象的值。
然后,应用服务器可利用打印单元620根据所部署的代码打印日志,并向客户端设备发送该日志。在此,可利用本领域周知且客户端设备可读取的任何格式来打印日志。本领域不对此进行限制。
在一些示例中,可通过回调函数的方式执行打印。执行回调的方法可以是由界面触发,也可以由应用服务器本地的系统中的写监听器触发。当选择调用最新代码,系统会将引用指向新的Groovy对象。然后由根方法来继续进行调用。由此执行了新代码,并可达到动态日志打印的功能。
客户端设备通过接收单元520接收该日志,并由分析单元530分析接收到的日志,寻找所调试系统中存在的问题,并相应地解决该问题。
需要注意的是,本发明实施例所记载的技术方案在不冲突的情况下可以任意组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上面的描述仅用于实现本发明的实施方式,本领域的技术人员应该理解,在不脱离本发明的范围的任何修改或局部替换,均应该属于本发明的权利要求来限定的范围,因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (18)
1.一种用于校验日志打印规则的方法,包括:
从用户接收日志打印规则;
校验所接收到的日志打印规则;
使校验通过的日志打印规则生效;以及
向所述日志打印规则对应的应用服务器发送已生效的日志打印规则,以由所述应用服务器根据所述日志打印规则打印日志。
2.根据权利要求1所述的方法,其中,通过zookeeper服务器执行所述方法。
3.一种基于日志的调试方法,包括:
在需要进行调试时,向规则管理服务器发送涉及所调试系统的日志打印规则;
从所述所调试系统所在的应用服务器接收根据所述日志打印规则打印的日志,其中,所述日志打印规则经所述规则管理服务器校验成功并生效之后发送给所述应用服务器;以及
分析接收到的日志,寻找所述所调试系统中存在的问题。
4.根据权利要求3所述的调试方法,其中,所述日志包含打印所述日志时所述应用服务器的内存中的至少部分信息,所述分析接收到的日志包括:从接收到的日志中提取所述内存中的至少部分信息,以分析所述所调试系统中存在的问题。
5.根据权利要求3或4所述的调试方法,还包括:编写所述日志打印规则。
6.根据权利要求5所述的调试方法,还包括:接收所述规则管理服务器反馈的校验结果,在所述校验结果指示校验失败的情况下重写编写所述日志打印规则。
7.一种日志打印方法,包括:
从规则管理服务器接收经所述规则管理服务器校验成功并生效的日志打印规则;以及
根据所述日志打印规则打印日志。
8.根据权利要求7所述的日志打印方法,其中,根据所述日志打印规则打印日志包括:
根据所述日志打印规则同步用户规则配置;
根据所述用户规则配置进行代码动态部署;以及
基于动态部署的代码打印日志。
9.根据权利要求7或8所述的日志打印方法,其中,所述日志包含打印所述日志时所述应用服务器的内存中的至少部分信息。
10.一种规则管理服务器,包括:
输入接口,用于从用户接收日志打印规则;
校验单元,用于校验所接收到的日志打印规则;
日志生效单元,用于使校验通过的日志打印规则生效;以及
输出接口,用于向所述日志打印规则对应的应用服务器发送已生效的日志打印规则,以由所述应用服务器根据所述日志打印规则打印日志。
11.根据权利要求10所述的规则管理服务器,其中,所述规则管理服务器是zookeeper服务器。
12.一种客户端设备,包括:
发送单元,用于在需要进行调试时,向规则管理服务器发送涉及所调试系统的日志打印规则;
接收单元,用于从所述所调试系统所在的应用服务器接收根据所述日志打印规则打印的日志,其中,所述日志打印规则经所述规则管理服务器校验成功并生效之后发送给所述应用服务器;以及
分析单元,用于分析接收到的日志,寻找所述所调试系统中存在的问题。
13.根据权利要求12所述的客户端设备,其中,所述日志包含打印所述日志时所述应用服务器的内存中的至少部分信息,所述分析单元还用于:从接收到的日志中提取所述内存中的信息,以分析所述所调试系统中存在的问题。
14.根据权利要求12或13所述的客户端设备,还包括:规则编写单元,用于编写所述日志打印规则。
15.根据权利要求14所述的客户端设备,其中,所述接收单元还接收所述规则管理服务器反馈的校验结果,以及所述规则编写单元还在所述校验结果指示校验失败的情况下重写编写所述日志打印规则。
16.一种应用服务器,包括:
接收单元,用于从规则管理服务器接收经所述规则管理服务器校验成功并生效的日志打印规则;以及
打印单元,用于根据所述日志打印规则打印日志。
17.根据权利要求16所述的应用服务器,还包括:
规则配置单元,用于根据所述日志打印规则同步用户规则配置;以及
代码部署单元,用于根据所述用户规则配置进行代码动态部署;
其中,所述打印单元还用于基于动态部署的代码打印所述日志。
18.根据权利要求16或17所述的应用服务器,其中,所述日志包含打印所述日志时所述应用服务器的内存中的至少部分信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510782884.5A CN105607878B (zh) | 2015-11-16 | 2015-11-16 | 一种日志打印方法及其设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510782884.5A CN105607878B (zh) | 2015-11-16 | 2015-11-16 | 一种日志打印方法及其设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105607878A true CN105607878A (zh) | 2016-05-25 |
CN105607878B CN105607878B (zh) | 2019-03-29 |
Family
ID=55987838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510782884.5A Active CN105607878B (zh) | 2015-11-16 | 2015-11-16 | 一种日志打印方法及其设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105607878B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110308880A (zh) * | 2019-05-20 | 2019-10-08 | 平安普惠企业管理有限公司 | 日志打印方法、系统、计算机设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831047A (zh) * | 2011-06-16 | 2012-12-19 | 上海聚力传媒技术有限公司 | 动态调整监控对象的日志信息输出的方法、装置和设备 |
US20140317448A1 (en) * | 2013-04-23 | 2014-10-23 | Facebook, Inc. | Incremental checkpoints |
-
2015
- 2015-11-16 CN CN201510782884.5A patent/CN105607878B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831047A (zh) * | 2011-06-16 | 2012-12-19 | 上海聚力传媒技术有限公司 | 动态调整监控对象的日志信息输出的方法、装置和设备 |
US20140317448A1 (en) * | 2013-04-23 | 2014-10-23 | Facebook, Inc. | Incremental checkpoints |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110308880A (zh) * | 2019-05-20 | 2019-10-08 | 平安普惠企业管理有限公司 | 日志打印方法、系统、计算机设备及计算机可读存储介质 |
CN110308880B (zh) * | 2019-05-20 | 2022-04-08 | 平安普惠企业管理有限公司 | 日志打印方法、系统、计算机设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105607878B (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11860821B2 (en) | Generating target application packages for groups of computing devices | |
US9979784B2 (en) | Method for cloud data backup and recovery | |
CN107171825B (zh) | 一种终端的重复日志过滤方法 | |
CN102609281B (zh) | 分布式软件补丁更新方法及系统 | |
CN110569035A (zh) | 软件开发项目的代码编译方法、装置、设备和存储介质 | |
CN103019874B (zh) | 基于数据同步实现异常处理的方法及装置 | |
CN110727581B (zh) | 崩溃定位方法与电子设备 | |
CN112506755B (zh) | 日志采集方法、装置、计算机设备和存储介质 | |
US20170033980A1 (en) | Agent manager for distributed transaction monitoring system | |
WO2021169124A1 (zh) | 安装软件包至目标主机的方法、装置和计算机设备 | |
CN112769802A (zh) | 基于服务端的访问校验方法、装置、电子设备及存储介质 | |
CN113704790A (zh) | 一种异常日志信息汇总方法及计算机设备 | |
CN112199284A (zh) | 程序自动化测试方法及其相应的装置、设备、介质 | |
US10754748B2 (en) | System and method for constructing extensible event log with javascript object notation (JSON) encoded payload data | |
CN113360379A (zh) | 程序测试方法和程序测试装置 | |
CN112559124A (zh) | 一种模型管理系统以及目标操作指令的处理方法和装置 | |
CN105607878A (zh) | 一种日志打印方法及其设备 | |
EP3852424B1 (en) | Application resilience for applications deployed on a cloud platform | |
CN109981342A (zh) | 一种批量处理网络设备操作命令的方法及系统 | |
CN114064510A (zh) | 功能测试方法、装置、电子设备和存储介质 | |
KR102368826B1 (ko) | 클라우드 서버 및 클라우드 서버의 동작 | |
CN110266762A (zh) | 一种数据上传方法、系统、装置及存储介质 | |
US10203970B2 (en) | Dynamic configuration of native functions to intercept | |
CN115242625B (zh) | 服务部署方法、装置、计算机设备及可读存储介质 | |
CN114844859B (zh) | 域名配置方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |