一种基于go语言的自动化日志添加和代码问题查找定位方法技术

技术编号:28131437 阅读:28 留言:0更新日期:2021-04-19 11:54
本发明专利技术提供一种基于go语言的自动化日志添加和代码问题查找定位方法,属于软件开发领域,本发明专利技术通过语法分析的代码函数获取方法,自动化的函数编排以及人为可干预的函数优先级分配,通过标签进行代码推演进行问题查找的方式。简化了Bug查找过程,降低了运维成本。降低了运维成本。降低了运维成本。

【技术实现步骤摘要】
一种基于go语言的自动化日志添加和代码问题查找定位方法


[0001]本专利技术涉及软件开发领域,尤其涉及一种基于go语言的自动化日志添加和代码问题查找定位方法。

技术介绍

[0002]在日常代码开发过程中,对于代码开发过程中问题的定位以及代码执行路径的追踪,使用日志是程序开发人员的重要方法,在go语言中不同的日志框架也应运而生,但是在使用过程中因为开发人员的人为因素日志的实际使用效果参差不齐,一套自动化的日志添加方法,规范统一的日志输出格式对于Bug的定位和后期的运维必不可少。
[0003]日志的管理是代码开发过程中很重要的一部分,完整的日志将会在系统维护中起着异常重要的作用。但由于日常代码开发过程中,开发人员换的习惯和人为因素造成日志的不完整,可追溯性差,对代码中Bug的查找带来了复杂性,同时也增加了后期代码运维的成本。

技术实现思路

[0004]为了解决以上技术问题,本专利技术提供了一种基于go语言的自动化日志添加和代码问题查找定位方法,通过一套自动化的代码插入机制,规范了代码日志的格式,降低了人为遗漏代码的可能性,为Bug的查找提供了较为完整的追踪路径,简化了Bug查找过程。同时格式化的日志输出对基于日志的数据挖掘和问题定位提供了便利,大大降低了运维成本。
[0005]本专利技术的技术方案是:
[0006]一种基于go语言的自动化日志添加和代码问题查找定位方法,通过语法分析的代码函数获取方法,自动化的函数编排以及人为可干预的函数优先级分配,通过标签进行代码推演进行问题查找
[0007]包括:
[0008]go语言日志框架接入与初始化;golang编译过程的函数分析,过滤,存储;函数方法编排与等级规划;日志处理过程。
[0009]进一步的,
[0010]步骤如下:
[0011]1)通过获取go的词法分析和语法分析生成的节点FuncDecl结构的形式生成的待添加日志函数集合;
[0012]2)通过自定义格式日志函数筛选的方法;
[0013]3)待添加日志函数的标签的使用以及按照获取频率修正优先级的判定方式;
[0014]4)通过扫描完整的代码,识别代码中存在的指定函数,并在函数指定位置添加日志的实现过程;
[0015]5)通过日志收集结合函数标签的代码追踪方式。
[0016]进一步的,
[0017]接入代码使用的日志框架,并指定日志生成格式
[0018]1)主动导入或者自动检测出go语言代码中所使用的日志框架,根据框架选择接入规则,通过日志框架规则构建日志自动插入的基础结构;
[0019]2)日志规则格式化,指定生成日志的格式,默认以“包名+
‘‑’
+方法名+
‘‑’
+线程ID”的形式作为提示信息,后面根据优先级选择跟随参数。
[0020]进一步的,
[0021]在golang的编译过程中,借助编译过程的语法分析和词法分析,在语法分析过程中输出FuncDecl结构体的节点信息,将节点信息中的Recv,Name,Type信息进行输出打印到指定文件,主要标记出函数名称,形参和返回值关键属性。
[0022]进一步的,
[0023]将获取的函数进行进一步的处理
[0024]包括
[0025](1)在打印的过程中将函数进行指定编排,给不同的函数加上标签;
[0026](2)在打印函数的过程中同时根据函数被使用的频率,自动改变函数的优先级并保存在打印的文件中;同时提供手动修改优先级方式。提供两种优先级,第一种在插入日志不携带函数参数,只显示提示信息用以追踪代码执行流程;第二种日志携带函数的入参信息,可以显示输入参数的具体数值。
[0027]进一步的,
[0028]日志的处理过程
[0029]1)扫描代码,通过关键字查找将格式化的日志加到代码函数的首行以及被调用方法的错误返回处理的首行;
[0030]2)连接主流的日志采集模块,将日志信息进行收集,根据日志规则对数据进行结构化处理存储,同时根据函数的标签对代码执行流程进行存储,同时搭建标签与结构数据连接,一个标签对应一条结构化数据;
[0031]3)如发现错误日志,根据函数标签进行路径查找,同时展示标签对应的结构化数据,方便问题的定位与代码推演。
[0032]本专利技术的有益效果是
[0033]使用自动化的日志插入方法将代码中较多的位置都加上了日志,通过格式化的日志简化了代码运行逻辑的处理流程,减少了代码开发人员的工作量。同时格式化的日志输出对后续的日志搜集和数据挖掘提供了优秀的数据资源,大大降低了运维成本。
附图说明
[0034]图1是本专利技术的工作流程示意图。
具体实施方式
[0035]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0036]本专利技术公开了一种基于go语言的自动化日志添加和代码问题查找定位方法,其中包含了go语言日志框架接入与初始化;golang编译过程的函数分析,过滤,存储;函数方法编排与等级规划;日志处理过程。
[0037]本专利技术技术方案如下:
[0038]1、接入代码使用的日志框架,并指定日志生成格式
[0039](1)主动导入或者自动检测出go语言代码中所使用的日志框架,根据框架选择接入规则,通过日志框架规则构建日志自动插入的基础结构。
[0040](2)日志规则格式化,指定生成日志的格式,默认以“包名+
‘‑’
+方法名+
‘‑’
+线程ID”的形式作为提示信息,后面根据优先级选择跟随参数。
[0041]2、在golang的编译过程中,借助编译过程的语法分析和词法分析,在语法分析过程中输出FuncDecl结构体的节点信息。将节点信息中的Recv,Name,Type等关键信息进行输出打印到指定文件,主要标记出函数名称,形参和返回值关键属性。
[0042]3、将获取的函数进行进一步的处理
[0043](1)在打印的过程中将函数进行指定编排,给不同的函数加上标签。
[0044](2)在打印函数的过程中同时根据函数被使用的频率,自动改变函数的优先级并保存在打印的文件中。同时提供手动修改优先级方式。目前提供两种优先级,第一种在插入日志不携带函数参数,只显示提示信息用以追踪代码执行流程。第二种日志携带函数的入参信息,可以显示输入参数的具体数值。
[0045]4、日志的处理过程
[0046]1)扫描代码,通过关键字查找将格式化的日志加到代码函数的首行以及被调用方法的错误返回处理的首行。
[0047]2)连接主流本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于go语言的自动化日志添加和代码问题查找定位方法,其特征在于,通过语法分析的代码函数获取方法,自动化的函数编排以及人为可干预的函数优先级分配,通过标签进行代码推演和问题查找。2.根据权利要求1所述的方法,其特征在于,包括:go语言日志框架接入与初始化;golang编译过程的函数分析,过滤,存储;函数方法编排与等级规划;日志处理过程。3.根据权利要求2所述的方法,其特征在于,步骤如下:1)通过获取go的词法分析和语法分析在编译过程的FuncDecl模块获取待添加日志函数集合;2)通过自定义格式日志函数筛选的方法;3)待添加日志函数的标签的使用以及按照获取频率修正优先级的判定方式;4)通过扫描完整的代码,识别代码中存在的指定函数,并在函数指定位置添加日志的实现过程;5)通过日志收集结合函数标签的代码追踪方式。4.根据权利要求3所述的方法,其特征在于,接入代码使用的日志框架,并指定日志生成格式包括1)主动导入或者自动检测出go语言代码中所使用的日志框架,根据框架选择接入规则,通过日志框架规则构建日志自动插入的基础结构;2)日志规则格式化,指定生成日志的格式,默认以“包名+
‘‑’
+方法名+
‘‑’
+线程ID”的形式作为提示信息,后面根据优先级选择跟随参数。5.根据权利要求4所述的...

【专利技术属性】
技术研发人员:景壮魏子重孙思清
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

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

1