一种程序与日志解耦的方法与流程

文档序号:14835559发布日期:2018-06-30 12:15阅读:1350来源:国知局

本发明涉及软件技术领域,尤其涉及一种软件程序与日志解耦的方法。



背景技术:

钩子:在项目代码中,认为需要扩展(暂时不扩展)的地方放置一个钩子函数,等需要扩展的时候,把实现的类和函数挂载到这个钩子上,就可以实现扩展了。

AOP:Aspect Oriented Programming的缩写。意为面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

在当前的程序开发当中,记录运行日志是必不可少的一个步骤,特别是在一些关键的主逻辑代码上,运行日志不单单可以监控程序的运行情况,还可以在程序出错的时候用来分析错误原因。运行日志的用途有很多,给程序开发者带来很多便利,但是运行日志也给程序带来了负担。一般而言,不做任何优化,运行日志跟主逻辑代码是耦合在一起的,即使是主逻辑代码没有错误,运行日志在写日志的时候如果发生了错误,主逻辑代码也会运行不下去。

目前解决这一问题的技术主要有两种:

1.采用钩子的方式把日志抽象独立出来。这种做法在一定程度上能够对日志解耦,但是必须在程序的主逻辑中加入钩子函数,这样一来日志跟程序逻辑还是会相互影响,并不能完全解决问题;

2.采用AOP的编程模式。这个方法能把运行日志和程序主逻辑完全解耦,不过方法局限性很大,只能在其提供的框架下编程,而且需要依赖配置文件,当程序逻辑变得复杂的时候,配置文件也会相应的变得复杂,对开发人员十分不友好。



技术实现要素:

为了解决上述技术问题,本发明提供了一种软件程序与日志解耦的方法,其目的在于,不影响程序逻辑的情况下,方便有效地完成运行日志的记录。

本发明所采用的技术方案是:

步骤1,将日志记录逻辑封装为函数接口,并设计入参参数;

步骤2,重写函数名错误处理机制,对于需要记录运行日志的函

数通过在函数名称中增加标识来区分;

步骤3,程序主逻辑正常调用函数,调用时,函数名称不带标识;

步骤4,判断函数调用时是否出现函数名错误,是则进入步骤5;

否则直接调用函数结束;

步骤5,错误处理函数捕获到异常,并将捕获到的函数名称和入

参保存在内存中,调用日志记录函数记录日志;

步骤6,错误处理函数将标识增加到函数名中,并重新调用函数。

优选的,所述步骤2中,函数名称标识要保证与编程语言自身的编程规则不冲突,可以在名称中增加前缀、增加后缀或者在名称中间增加标识。

本发明的有益效果是:

本发明通过采用函数名错误处理机制解决了日志与程序耦合的问题,使得程序主逻辑的代码和运行日志的代码相互隔离,互不影响,即使主逻辑出现了错误,运行日志依然能够被正常地记录,并且不用依赖任何框架,对编程语言也没有局限性,有很好的适应性和实用性。

附图说明

下面结合附图对本发明的具体实施方式作进一步说明:

图1是日志解耦方法的流程图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

如图1所示,本发明的具体实施方式如下:

步骤1,将日志记录逻辑封装为函数接口,并设计两个入参参数,参数一为函数名称funcName,参数二为函数的入参集合paramList;

步骤2,重写函数名错误处理机制,对于需要记录运行日志的函数通过在函数名称中增加标识来区分,函数名称标识要保证与编程语言自身的编程规则不冲突,可以通过在名称中增加前缀、增加后缀或者是其他方式。比如前缀可以是下划线“_”,可以是加号“+”,甚至如果编程语言允许,可以是星号“*”,也可以是单词,例如“LOG”,但是一定要保证与编程规则不冲突;

步骤3,程序主逻辑正常调用函数,调用时,函数名称不带标识。比如,采用下划线“_”前缀标记需要记录日志的函数,程序原来的函数名称是“func”,这个函数是需要记录运行日志的,那么就在函数名称前加上前缀“_”,名称改成“_func”。程序调用这个函数的时候,依然是采用“func”这个名字;

步骤4,判断函数调用时是否出现函数名错误,是则进入步骤5;否则直接调用函数结束;

步骤4中,以步骤3中的例子为例,程序主逻辑调用名称为“func”的函数时,会出现函数名称错误,因为只有“_func”这个函数,没有“func”这个函数;

步骤5,错误处理函数捕获到异常,并将捕获到的函数名称和入参保存在内存中,调用日志记录函数记录日志;

步骤6,错误处理函数将标识增加到函数名中,并重新调用函数。比如函数名称为“func”,需要记录运行日志的函数标识是函数名称前加下划线“_”,那么错误处理函数将调用函数名称为“_func”的函数。这个函数名称是真实存在的,结合之前捕获到的参数,函数能够被正常调用。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1