CN108228439B - 一种程序与日志解耦的方法 - Google Patents

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

Info

Publication number
CN108228439B
CN108228439B CN201810008083.7A CN201810008083A CN108228439B CN 108228439 B CN108228439 B CN 108228439B CN 201810008083 A CN201810008083 A CN 201810008083A CN 108228439 B CN108228439 B CN 108228439B
Authority
CN
China
Prior art keywords
function
log
calling
program
name
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.)
Active
Application number
CN201810008083.7A
Other languages
English (en)
Other versions
CN108228439A (zh
Inventor
叶浩斌
史伟
霍键聪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Eflycloud Computing Co Ltd
Original Assignee
Guangdong Eflycloud Computing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Eflycloud Computing Co Ltd filed Critical Guangdong Eflycloud Computing Co Ltd
Priority to CN201810008083.7A priority Critical patent/CN108228439B/zh
Publication of CN108228439A publication Critical patent/CN108228439A/zh
Application granted granted Critical
Publication of CN108228439B publication Critical patent/CN108228439B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种程序与日志解耦的方法,包括步骤:S1,将日志记录逻辑封装为函数接口;S2,重写函数名错误处理机制;S3,程序主逻辑调用函数;S4,判断函数调用时是否出现函数名错误,是则进入步骤5;否则直接调用函数结束;S5,错误处理函数捕获到异常,并将捕获到的函数名称和入参保存在内存中,调用日志记录函数记录日志;S6,错误处理函数将标识增加到函数名中,并重新调用函数。本发明通过采用函数名错误处理机制解决了日志与程序耦合的问题,使得程序主逻辑的代码和运行日志的代码相互隔离,互不影响,即使主逻辑出现了错误,运行日志依然能够被正常地记录,并且不用依赖任何框架,对编程语言也没有局限性,有很好的适应性和实用性。

Description

一种程序与日志解耦的方法
技术领域
本发明涉及软件技术领域,尤其涉及一种软件程序与日志解耦的方法。
背景技术
钩子:在项目代码中,认为需要扩展(暂时不扩展)的地方放置一个钩子函数,等需要扩展的时候,把实现的类和函数挂载到这个钩子上,就可以实现扩展了。
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”的函数。这个函数名称是真实存在的,结合之前捕获到的参数,函数能够被正常调用。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

Claims (2)

1.一种程序与日志解耦的方法,其特征在于,其包括步骤:
步骤1,将日志记录逻辑封装为函数接口,并设计入参参数,所述入参参数包括参数一和参数二,所述参数一为函数名称funcName,所述参数二为函数的入参集合paramList;
步骤2,重写函数名错误处理机制,对于需要记录运行日志的函数通过在函数名称中增加标识来区分;
步骤3,程序主逻辑正常调用函数,调用时,函数名称不带标识;
步骤4,判断函数调用时是否出现函数名错误,是则进入步骤5;否则直接调用函数结束;
步骤5,错误处理函数捕获到异常,并将捕获到的函数名称和入参保存在内存中,调用日志记录函数记录日志;
步骤6,错误处理函数将标识增加到函数名中,并重新调用函数。
2.根据权利要求1所述的一种程序与日志解耦的方法,其特征在于,所述步骤2中,函数名称标识要保证与编程语言自身的编程规则不冲突,可以在名称中增加前缀、增加后缀或者在名称中间增加标识。
CN201810008083.7A 2018-01-04 2018-01-04 一种程序与日志解耦的方法 Active CN108228439B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810008083.7A CN108228439B (zh) 2018-01-04 2018-01-04 一种程序与日志解耦的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810008083.7A CN108228439B (zh) 2018-01-04 2018-01-04 一种程序与日志解耦的方法

Publications (2)

Publication Number Publication Date
CN108228439A CN108228439A (zh) 2018-06-29
CN108228439B true CN108228439B (zh) 2021-05-11

Family

ID=62643032

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810008083.7A Active CN108228439B (zh) 2018-01-04 2018-01-04 一种程序与日志解耦的方法

Country Status (1)

Country Link
CN (1) CN108228439B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110275817B (zh) * 2019-06-13 2020-09-22 北京航空航天大学 一种基于模型驱动的日志文件自动生成方法
CN110908820A (zh) * 2019-11-06 2020-03-24 北京达佳互联信息技术有限公司 一种异步任务的执行方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010086871A1 (en) * 2009-01-28 2010-08-05 Harshal Ingale A modularized micro processor design
CN102999319A (zh) * 2011-09-09 2013-03-27 北京大学 一种基于aop技术缓存函数执行结果的方法及系统
CN105260168A (zh) * 2014-07-15 2016-01-20 阿里巴巴集团控股有限公司 日志输出方法和装置
CN105430433A (zh) * 2015-10-29 2016-03-23 小米科技有限责任公司 信息处理方法及装置
CN106970789A (zh) * 2017-03-07 2017-07-21 武汉斗鱼网络科技有限公司 一种Android端基于AOP和AspectJ的日志自动埋点方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8660252B2 (en) * 2009-12-18 2014-02-25 Telefonaktiebolaget L M Ericsson (Publ) Control of execution time of time-dependent services by defining different time zones for the subscriber's location, the execution server, and the service subscription information

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010086871A1 (en) * 2009-01-28 2010-08-05 Harshal Ingale A modularized micro processor design
CN102999319A (zh) * 2011-09-09 2013-03-27 北京大学 一种基于aop技术缓存函数执行结果的方法及系统
CN105260168A (zh) * 2014-07-15 2016-01-20 阿里巴巴集团控股有限公司 日志输出方法和装置
CN105430433A (zh) * 2015-10-29 2016-03-23 小米科技有限责任公司 信息处理方法及装置
CN106970789A (zh) * 2017-03-07 2017-07-21 武汉斗鱼网络科技有限公司 一种Android端基于AOP和AspectJ的日志自动埋点方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《commons-logging日志实现解耦》;珞樱缤纷;《https://www.cnblogs.com/crazyrunning/p/6145890.html》;20170721;全文 *

Also Published As

Publication number Publication date
CN108228439A (zh) 2018-06-29

Similar Documents

Publication Publication Date Title
US20210200863A1 (en) Methods and apparatus to improve feature engineering efficiency with metadata unit operations
US20080072216A1 (en) Method and device for ANBF string pattern matching and parsing
CN108228439B (zh) 一种程序与日志解耦的方法
WO2021125779A1 (ko) Api 통합관리를 위한 클라우드 기반의 api 메타데이터 관리방법 및 시스템
CN111881102A (zh) 基于aop切面采集审计日志的方法、装置及可读介质
JP2011516987A (ja) モバイル・デバイス・ソフトウェアの管理方法及び装置
CN110489310B (zh) 一种记录用户操作的方法、装置、存储介质及计算机设备
US11720532B2 (en) System and method for customized graphQL data-handling scripts
CN110750405B (zh) 一种基于硬件板卡识别的软件兼容性方法
CN112579461A (zh) 断言处理方法、系统和存储介质
ITMI951510A1 (it) Emulatore per un database relazionale in linguaggio sql
CN115421765A (zh) 一种应用于国产化操作系统的大数据管理部署方法
JP2007065837A (ja) 状態制御方法、状態制御プログラムおよび状態制御プログラムを記録した記録媒体
CN111290747B (zh) 一种创建函数钩子的方法、系统、设备及介质
KR100858156B1 (ko) 에스시에이 기반 애플리케이션 시스템 및 이의 운용 중컴포넌트 교체방법
CN107247904B (zh) 一种安全基线项目同步方法及装置
CN111367811B (zh) 一种提高bmc的管理网页调试效率的方法及系统
CN111273940B (zh) 将程序文件上传至代码仓库的方法及装置
CN113296898A (zh) 异步任务处理方法、装置、电子设备和存储介质
CN112925667B (zh) 预防sdk崩溃的方法、装置、设备及可读存储介质
CN111273944B (zh) 生成程序文件并上传至代码仓库的方法及装置
CN108681460A (zh) 一种升级插件的方法及电子终端
CN116382751A (zh) 应用小程序的更新方法、装置、设备、系统及存储介质
CN116431603A (zh) Plc程序的存储和加载方法、装置和电子设备
CN117675898A (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
GR01 Patent grant
GR01 Patent grant