一种日志输出方法及装置制造方法及图纸

技术编号:21913824 阅读:30 留言:0更新日期:2019-08-21 12:23
本申请公开了一种日志输出方法及装置。其中所述日志输出方法,包括:获取服务请求;针对所述服务请求运行与所述服务请求对应的函数,获得运行结果;根据所述运行结果,生成用于表征函数调用关系的函数调用链;根据所述函数调用链生成记录有函数调用关系的日志;输出所述日志。采用本申请提供的方法,解决了现有技术中,采用在代码中增加断点的方法定位软件问题,存在的定位效率低的问题。

A Log Output Method and Device

【技术实现步骤摘要】
一种日志输出方法及装置
本申请涉及软件测试领域,具体涉及一种日志输出方法及装置。
技术介绍
现在软件系统的代码行数经常可以达到百万到千万的数量级。根据软件需求的变化,研发人员经常需要在原有代码基础上,进行新功能的迭代开发。在迭代开发的过程中,经常会引入新的问题,例如破坏了原有代码的运行逻辑、或者新增加的代码功能不够完善等。在开发完毕后,需要进行各种级别的测试,例如单元测试、集成测试、系统联调等。在上述测试过程中,一旦发现软件系统存在问题,首先需要定位问题所在的代码位置。现有技术中,一般采用在代码中增加断点的方法定位问题所在的代码位置,然后在服务器上进行远程调试,当程序运行至断点处就会暂停,研发人员会根据断点处的程序运行状态确定软件问题。然而,上述方法往往不能很快、准确的定位出问题代码,存在定位效率低的问题。
技术实现思路
本申请提供一种日志输出方法,以提高定位问题代码的效率。所述日志输出方法,包括:获取服务请求;针对所述服务请求运行与所述服务请求对应的函数,获得运行结果;根据所述运行结果,生成用于表征函数调用关系的函数调用链;根据所述函数调用链生成记录有函数调用关系的日志;输出所述日志。可选的,所述运行结果包括函数调用关系;所述根据所述运行结果,生成用于表征函数调用关系的函数调用链,包括:根据所述运行结果包括的函数调用关系,生成所述函数调用链。可选的,所述根据所述运行结果包括的函数调用关系,生成所述函数调用链,包括:将针对所述服务请求调用的第一个函数作为根节点,将所述第一个函数需要直接或间接调用的函数作为所述根节点的子孙节点,生成用于表征函数调用关系的函数关系调用树。可选的,所述运行结果还包括函数调用所使用的请求参数以及被调用函数向调用函数返回的执行结果中的至少一种数据;所述函数调用链包括函数调用所使用的请求参数以及被调用函数向调用函数返回的执行结果中的至少一种数据;所述日志还记录有函数调用所使用的请求参数以及被调用函数向调用函数返回的执行结果中的至少一种数据。可选的,所述根据所述函数调用链生成记录有函数调用关系的日志,包括:从所述函数关系调用树中的根节点开始,按照深度优先的方式遍历所述函数关系调用树,在日志中记录函数调用关系,生成记录有函数调用关系的日志。可选的,所述日志记录的函数调用关系包括问题函数的信息。可选的,所述与所述服务请求对应的函数为接口层、服务层、核心层、持久化层、调用外部服务层以及基础工具层中的至少一个层中的函数。可选的,所述针对所述服务请求运行与所述服务请求对应的函数,获得运行结果,包括:根据所述服务请求,运行接口层的函数;根据所述接口层的函数的调用信息,运行所述服务层的函数;根据所述服务层的函数的调用信息,运行所述核心层的函数;根据所述核心层的函数的调用信息,运行所述持久化层的函数;根据所述接口层的函数的运行信息、所述服务层的函数的运行信息、所述核心层的函数的运行信息以及所述持久化层的函数的运行信息,获得运行结果。可选的,所述根据所述运行结果,生成用于表征函数调用关系的函数调用链,包括:根据所述服务层的函数的运行信息,获得所述接口层的函数和所述服务层的函数之间的调用关系;根据所述核心层的函数的运行信息,获得所述服务层的函数和所述核心层的函数之间的调用关系;根据所述持久化层的函数的运行信息,获得所述核心层的函数和所述持久化层的函数之间的调用关系;根据所述接口层的函数和所述服务层的函数之间的调用关系、所述服务层的函数和所述核心层的函数之间的调用关系以及所述核心层的函数和所述持久化层的函数之间的调用关系,生成用于表征函数调用关系的函数调用链。本申请提供一种日志输出装置,包括:获取单元,用于获取服务请求;获得单元,用于针对所述服务请求运行与所述服务请求对应的函数,获得运行结果;生成单元,用于根据所述运行结果,生成用于表征函数调用关系的函数调用链;日志单元,用于根据所述函数调用链生成记录有函数调用关系的日志;输出单元,用于输出所述日志。可选的,所述运行结果包括函数调用关系;所述根据所述运行结果,生成用于表征函数调用关系的函数调用链,包括:根据所述运行结果包括的函数调用关系,生成所述函数调用链。可选的,所述生成单元,具体用于:将针对所述服务请求调用的第一个函数作为根节点,将所述第一个函数需要直接或间接调用的函数作为所述根节点的子孙节点,生成用于表征函数调用关系的函数关系调用树。可选的,所述运行结果还包括函数调用所使用的请求参数以及被调用函数向调用函数返回的执行结果中的至少一种数据;所述函数调用链包括函数调用所使用的请求参数以及被调用函数向调用函数返回的执行结果中的至少一种数据;所述日志还记录有函数调用所使用的请求参数以及被调用函数向调用函数返回的执行结果中的至少一种数据。可选的,所述日志单元,具体用于:从所述函数关系调用树中的根节点开始,按照深度优先的方式遍历所述函数关系调用树,在日志中记录函数调用关系,生成记录有函数调用关系的日志。可选的,所述日志记录的函数调用关系包括问题函数的信息。可选的,所述与所述服务请求对应的函数为接口层、服务层、核心层、持久化层、调用外部服务层以及基础工具层中的至少一个层中的函数。本申请提供一种电子设备,所述电子设备包括:处理器;存储器,用于存储程序,所述程序在被所述处理器读取执行时,执行如下操作:获取服务请求;针对所述服务请求运行与所述服务请求对应的函数,获得运行结果;根据所述运行结果,生成用于表征函数调用关系的函数调用链;根据所述函数调用链生成记录有函数调用关系的日志;输出所述日志。本申请提供一种计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行时,实现以下步骤:获取服务请求;针对所述服务请求运行与所述服务请求对应的函数,获得运行结果;根据所述运行结果,生成用于表征函数调用关系的函数调用链;根据所述函数调用链生成记录有函数调用关系的日志;输出所述日志。本申请提供一种问题函数的定位方法,包括:获得针对目标软件的测试请求;针对所述测试请求对所述目标软件进行测试,获得测试结果;如果根据测试结果确定所述目标软件存在问题,则获得记录有所述目标软件的函数调用关系的日志;根据所述函数调用关系,查找所述目标软件中存在问题的函数。可选的,所述针对所述测试请求对所述目标软件进行测试,获得测试结果,包括:指示所述目标软件运行指定的测试用例,获得所述目标软件的运行结果;所述方法还包括:记录所述目标软件运行所述测试用例所产生的函数调用关系;生成记录有所述所产生的函数调用关系的日志;存储所述记录有所述所产生的函数调用关系的日志;所述获得记录有所述目标软件的函数调用关系的日志,包括:获得存储的所述记录有所述所产生的函数调用关系的日志。可选的,所述根据所述函数调用关系,查找所述目标软件中存在问题的函数,包括:在所述日志中查找在所述函数调用关系中最后一个被调用的函数的信息;将所述最后一个被调用的函数的信息确定为问题函数的信息。可选的,所述日志还记录有函数调用所使用的请求参数以及被调用函数向调用函数返回的执行结果中的至少一种数据;所述根据所述函数调用关系,查找所述目标软件中存在问题的函数,包括:根据所述函数调用关系,并根据所述请求参数以及所述执行结果中的至少一种数据,在所述本文档来自技高网...

【技术保护点】
1.一种日志输出方法,其特征在于,包括:获取服务请求;针对所述服务请求运行与所述服务请求对应的函数,获得运行结果;根据所述运行结果,生成用于表征函数调用关系的函数调用链;根据所述函数调用链生成记录有函数调用关系的日志;输出所述日志。

【技术特征摘要】
1.一种日志输出方法,其特征在于,包括:获取服务请求;针对所述服务请求运行与所述服务请求对应的函数,获得运行结果;根据所述运行结果,生成用于表征函数调用关系的函数调用链;根据所述函数调用链生成记录有函数调用关系的日志;输出所述日志。2.根据权利要求1所述的日志输出方法,其特征在于,所述运行结果包括函数调用关系;所述根据所述运行结果,生成用于表征函数调用关系的函数调用链,包括:根据所述运行结果包括的函数调用关系,生成所述函数调用链。3.一种日志输出装置,其特征在于,包括:获取单元,用于获取服务请求;获得单元,用于针对所述服务请求运行与所述服务请求对应的函数,获得运行结果;生成单元,用于根据所述运行结果,生成用于表征函数调用关系的函数调用链;日志单元,用于根据所述函数调用链生成记录有函数调用关系的日志;输出单元,用于输出所述日志。4.一种电子设备,其特征在于,所述电子设备包括:处理器:存储器,用于存储程序,所述程序在被所述处理器读取执行时,执行如下操作:获取服务请求;针对所述服务请求运行与所述服务请求对应的函数,获得运行结果;根据所述运行结果,生成用于表征函数调用关系的函数调用链;根据所述函数调用链生成记录有函数调用关系的日志;输出所述日志。5.一种计算机可读取存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现以下步骤:获取服务请求;针对所述服务请求运行与所述服务请求对应的函数,获得运行结果;根据所述运行结果,生成用于表征函数调用关系的函数调用链;根据所述函数调用链生成记录有函数调用关系的日志;输出所述日志。6.一种问题函数的定位方法,其特征在于,包括:获得针对目标软件的测试请求;针对所述测试请求对所述目标软件进行测试,获得测试结果;如果根据测试结果确定所述目标软件存在问题,则获得记录有所述目标软件的函...

【专利技术属性】
技术研发人员:何青松
申请(专利权)人:口碑上海信息技术有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1