CN111897787A - 一种面向业务逻辑实现日志输出的方法及装置 - Google Patents

一种面向业务逻辑实现日志输出的方法及装置 Download PDF

Info

Publication number
CN111897787A
CN111897787A CN202010554138.1A CN202010554138A CN111897787A CN 111897787 A CN111897787 A CN 111897787A CN 202010554138 A CN202010554138 A CN 202010554138A CN 111897787 A CN111897787 A CN 111897787A
Authority
CN
China
Prior art keywords
log
module
sub
service logic
processing
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.)
Pending
Application number
CN202010554138.1A
Other languages
English (en)
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.)
Aisino Corp
Original Assignee
Aisino Corp
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 Aisino Corp filed Critical Aisino Corp
Priority to CN202010554138.1A priority Critical patent/CN111897787A/zh
Publication of CN111897787A publication Critical patent/CN111897787A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • 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

Abstract

本发明公开了一种面向业务逻辑实现日志输出的方法,当调用处理业务逻辑的主模块时,所述主模块根据预先定义的日志优选级,输出各个子模块对应的日志内容,将错误日志的输出面向逻辑集中输出,解决由于错误日志是分散的不易维护,输出的日志信息很容易出现重复而造成大量的冗余等问题。

Description

一种面向业务逻辑实现日志输出的方法及装置
技术领域
本申请涉及日志处理技术领域,具体涉及一种面向业务逻辑实现日志输出的方法,同时涉及一种面向业务逻辑实现日志输出的装置。
背景技术
错误管理一定离不开报告错误以便我们针对错误找出解决方法,错误信息大都以日志的形式输出。在日志所提供的信息不足以定位问题的情形下,就需要重现错误。如果错误很容易重试,那基本上能快速地解决。但也存在错误因为不易重视而使得我们难以查错的情况。
在软件系统的研发中,研发人员需要第一时间解决出现的问题,研发过程中需要重视的心态去思考应该输出哪些必要的日志信息。由于大量的日志的输出不可避免地会影响程序的性能,所以,需要思考怎样有效地组织错误日志,以尽可能做到既方便查错又不影响程序的性能。
发明内容
本申请提供一种面向业务逻辑实现日志输出的方法,解决由于错误日志是分散的不易维护。输出的日志信息很容易出现重复而造成大量的冗余等问题。
本申请提供一种面向业务逻辑实现日志输出的方法,包括:
定义处理业务逻辑模块的错误码;
根据所述处理业务逻辑的各个子模块的功能,将包含所述错误码的日志内容添加至所述各个子模块,为所述各个子模块添加日志;
当调用处理业务逻辑的主模块时,所述主模块根据预先定义的日志优选级,输出各个子模块对应的日志内容。
优选的,错误码,包括:
所述处理业务逻辑模块各个子模块的名称和错误类型。
优选的,根据所述处理业务逻辑的各个子模块的功能,将所述包含错误码的日志内容添加至所述各个子模块,为所述各个子模块添加日志,包括:
根据所述处理业务逻辑的各个子模块的功能,获取各个子模块对应的错误码;
将所述包含错误码的日志内容添加至对应的各个子模块,从而为所述各个子模块添加日志。
优选的,预先定义的日志优先级,包括:
致命、错误和调试。
优选的,当调用处理业务逻辑的主模块时,所述主模块根据预先定义的日志优选级,输出各个子模块对应的日志内容,包括:
当调用处理业务逻辑的主模块时,所述主模块根据业务逻辑调用所述主模块包含的子模块;
所述子模块执行时,处理业务逻辑的主模块根据预先定义的日志优先级,输出被调用的子模块对应的日志内容。
优选的,输出被调用的子模块对应的日志内容,包括:
输出被调用的子模块对应的错误码、日志的优先级、日志产生的时间和位置。
本申请同时提供一种面向业务逻辑实现日志输出的装置,包括:
错误码定义单元,用于定义处理业务逻辑模块的错误码;
日志添加单元,用于根据所述处理业务逻辑的各个子模块的功能,将包含所述错误码的日志内容添加至所述各个子模块,为所述各个子模块添加日志;
日志内容输出单元,用于当调用处理业务逻辑的主模块时,所述主模块根据预先定义的日志优选级,输出各个子模块对应的日志内容。
优选的,日志添加单元,包括:
错误码获取子单元,用于根据所述处理业务逻辑的各个子模块的功能,获取各个子模块对应的错误码;
日志添加子单元,用于将所述错误码添加至对应的各个子模块,从而为所述各个子模块添加日志。
优选的,日志内容输出单元,包括:
模块调用子单元,用于当调用处理业务逻辑的主模块时,所述主模块根据业务逻辑调用所述主模块包含的子模块;
日志内容输出子单元,用于所述子模块执行时,处理业务逻辑的主模块根据预先定义的日志优先级,输出被调用的子模块对应的日志内容。
本申请提供一种面向业务逻辑实现日志输出的方法,能够使错误日志信息是面向逻辑集中输出,解决由于错误日志是分散的不易维护,输出的日志信息很容易出现重复而造成大量的冗余等问题。
附图说明
图1是本申请提供的一种面向业务逻辑实现日志输出的方法流程示意图;
图2是本申请提供的一种面向业务逻辑实现日志输出的装置示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
图1是本申请提供的一种面向业务逻辑实现日志输出的方法流程示意图,下面结合图1对本申请提供的方法进行详细说明。
步骤S101,定义处理业务逻辑模块的错误码。
在软件系统的设计中,会根据系统输出的日志对系统的调试,也会根据系统输出的日志定位系统出现的问题,从而解决问题。所以,一般会预先定义日志的错误码,错误码可以告诉我们是什么样的错误发生了且发生在哪一个模块。所以,错误码至少包括,所述处理业务逻辑模块各个子模块的名称和错误类型。
步骤S102,根据所述处理业务逻辑的各个子模块的功能,将包含所述错误码的日志内容添加至所述各个子模块,为所述各个子模块添加日志。
处理业务逻辑的各个子模块用于完成不同的功能,各个子模块的功能,也会有对应的错误码,所以,根据所述处理业务逻辑的各个子模块的功能,获取各个子模块对应的错误码;然后,将所述包含错误码的日志内容添加至对应的各个子模块,从而为所述各个子模块添加日志。日志的内容不仅包括错误码,还包括日志的优先级、日志产生的时间和位置、以及产生日志的代码行等。
步骤S103,当调用处理业务逻辑的主模块时,所述主模块根据预先定义的日志优选级,输出各个子模块对应的日志内容。
当调用处理业务逻辑的主模块时,所述主模块根据业务逻辑调用所述主模块包含的子模块;而在调用子模块时,子模块自身不会输出日志内容,因为日志内容的输出放在了主模块,所以,在子模块被调用时,虽然产生了日志,但是,输出动作却是由主模块来完成的,所以,当子模块执行时,处理业务逻辑的主模块根据预先定义的日志优先级,输出被调用的子模块对应的日志内容。预先定义的日志优先级,包括:致命、错误和调试,严重程度分别从高到低。但并不局限于此,可以根据实际应用不同严重程度的日志优先级。
带有日志功能的程序。通常能通过某种形式控制允许输出的登记。比如,如果只允许输出到错误等级的话,那么低于它的调试级的日志就不能输出。显然,输出日志的级别越低,其所输出的信息就越细。大多软件在正常运行时并不输出调试级信息,这是考虑系统性能而做出的选择。
应用本申请提供的方法,具体的实施例如下:
传统的日志输出方法是以面向过程的方式,为了说明,需要借助一个简化的税控系统开票处理程序片段,如下所示。
Figure BDA0002543620610000041
Figure BDA0002543620610000051
Figure BDA0002543620610000061
Thread_call_process()是一个接收发票开具的入口函数,负责处理接受到的发票流水消息。
这个程序片段使用了三个级别的日志:fatal(致命)、error(错误)、和debug(调试),严重程度分别从高到低。带有日志功能的程序。通常能通过某种形式控制允许输出的登记。比如,如果只允许输出到错误等级的话,那么低于它的调试级的日志就不能输出。显然,输出日志的级别越低,其所输出的信息就越细。大多软件在正常运行时并不输出调试级信息,这是考虑系统性能而做出的选择。
对于上述中的程序,当invoice_number_analyze()、head_alloc()或det_alloc()中出现错误时都会输出错误日志。这一简化程序中输出日志的方式,作者称之为面向过程的平面化输出。这种方式具有以下特点:
日志的输出动作是分散在各函数中的,所获得的日志很像“流水账”,查错时不容易理出整体逻辑。由于错误日志是分散的,当需要增减日志时不易维护。输出的日志信息很容易出现重复而造成大量的冗余。这种形式的错误处理能通过日志反应出的程序的运行路径,这对于分析问题有一定的帮助。
采用这种方式输出的错误日志,由于每一个函数看到的只是其函数内部本身有限的信息,因此更具局限性。为了更有效地组织错误信息,我们需要探索其他的方法。为了解决面向过程方式存在的问题,我们可以考虑将出错时的输出日志的动作放在处理逻辑的更上层。对于上述的程序,处理逻辑的更上层是在invoice_make_process()函数内,因为不论后面要调用多少个函数,消息都是在这个函数中收到并进行处理的。另外,invoice_make_process()所调用的所有函数,都是基于invoice_t结构进行处理的。如果将出错处理放到invoice_make_process()函数中,修订后代码如下所示。
Figure BDA0002543620610000062
Figure BDA0002543620610000071
Figure BDA0002543620610000081
重新设计一种实现日志的输出方法,在于错误日志的输出全部放在invoice_make_process()函数中,而其他的被调用函数中不包含任何的日志输出行为,另外,errstr(error)将具体的错误码名打印出来,错误码名可以告诉我们是什么样的错误发生了且发生在哪一个模块。
采用这种错误处理方式的依据是,不论是什么类型的错误都与相关的业务逻辑有关。也就是说,错误信息是面向业务逻辑进行集中输出的,输出日志不再是一个个小片段。
在这个示例程序中只输出了业务逻辑中invoice_t数据结构相关的信息,在实际项目中还可根据情况输出其他的信息以便查错。比如,如果msg_t数据结构还存在其他的信息,且出错时了解这些信息有助于分析错误成因的话,也可以选择在出错时将它们输出。由于出错时的日志输出是集中管理的,添加、删除将变得容易,也不容易出现冗余日志,更易于后续的维护工程师更全面地考虑哪些日志需要输出以方便查错。
另外,面向业务逻辑的集中输出在这种方式下,如果获得程序的调用路径,就需要设计一种机制或引入一个变量用于记录程序的运行路径,并在出错时从集中控制点一并输出。程序在处理逻辑的过程中一定会产生一些中间消息,这些信息有可能并不是直接放在集中控制点所能看到的数据结构中的,而这些中间信息对于出错成因分析有可能相当重要。为了解决这个问题,可以采用更改集中控制点所能看到的数据结构,将中间结果也存入其中,然后在集中控制点处将其一并输出。可以有效解决应用场景各种问题。
传统的面向过程的平面化输出看到的只是数据结构的片段,难以做到有效地描述出错时的现场,面向业务逻辑的集中输出,错误日志不再是片段。面向业务逻辑的集中日志输出方法,将出错时的输出日志的动作放在处理逻辑的更上层,可以有效解决面向过程输出日志方式带来局限性问题。在实践中,应考虑以面向业务逻辑的集中输出方式为主,结合其他各种方式,能够有效帮助研发人员排查问题,提高软件产品健壮性。
基于同一发明构思,本申请同时提供一种面向业务逻辑实现日志输出的装置200,如图2所示,包括:
错误码定义单元210,用于定义处理业务逻辑模块的错误码;
日志添加单元220,用于根据所述处理业务逻辑的各个子模块的功能,将包含所述错误码的日志内容添加至所述各个子模块,为所述各个子模块添加日志;
日志内容输出单元230,用于当调用处理业务逻辑的主模块时,所述主模块根据预先定义的日志优选级,输出各个子模块对应的日志内容。
优选的,日志添加单元,包括:
错误码获取子单元,用于根据所述处理业务逻辑的各个子模块的功能,获取各个子模块对应的错误码;
日志添加子单元,用于将所述错误码添加至对应的各个子模块,从而为所述各个子模块添加日志。
优选的,日志内容输出单元,包括:
模块调用子单元,用于当调用处理业务逻辑的主模块时,所述主模块根据业务逻辑调用所述主模块包含的子模块;
日志内容输出子单元,用于所述子模块执行时,处理业务逻辑的主模块根据预先定义的日志优先级,输出被调用的子模块对应的日志内容。
本申请提供一种面向业务逻辑实现日志输出的方法,能够使错误日志信息是面向逻辑集中输出,解决由于错误日志是分散的不易维护,输出的日志信息很容易出现重复而造成大量的冗余等问题。
最后应该说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。

Claims (9)

1.一种面向业务逻辑实现日志输出的方法,其特征在于,包括:
定义处理业务逻辑模块的错误码;
根据所述处理业务逻辑的各个子模块的功能,将包含所述错误码的日志内容添加至所述各个子模块,为所述各个子模块添加日志;
当调用处理业务逻辑的主模块时,所述主模块根据预先定义的日志优选级,输出各个子模块对应的日志内容。
2.根据权利要求1所述的方法,其特征在于,错误码,包括:
所述处理业务逻辑模块各个子模块的名称和错误类型。
3.根据权利要求1所述的方法,其特征在于,根据所述处理业务逻辑的各个子模块的功能,将所述包含错误码的日志内容添加至所述各个子模块,为所述各个子模块添加日志,包括:
根据所述处理业务逻辑的各个子模块的功能,获取各个子模块对应的错误码;
将所述包含错误码的日志内容添加至对应的各个子模块,从而为所述各个子模块添加日志。
4.根据权利要求1所述的方法,其特征在于,预先定义的日志优先级,包括:
致命、错误和调试。
5.根据权利要求1所述的方法,其特征在于,当调用处理业务逻辑的主模块时,所述主模块根据预先定义的日志优选级,输出各个子模块对应的日志内容,包括:
当调用处理业务逻辑的主模块时,所述主模块根据业务逻辑调用所述主模块包含的子模块;
所述子模块执行时,处理业务逻辑的主模块根据预先定义的日志优先级,输出被调用的子模块对应的日志内容。
6.根据权利要求1或5所述的方法,其特征在于,输出被调用的子模块对应的日志内容,包括:
输出被调用的子模块对应的错误码、日志的优先级、日志产生的时间和位置。
7.一种面向业务逻辑实现日志输出的装置,其特征在于,包括:
错误码定义单元,用于定义处理业务逻辑模块的错误码;
日志添加单元,用于根据所述处理业务逻辑的各个子模块的功能,将包含所述错误码的日志内容添加至所述各个子模块,为所述各个子模块添加日志;
日志内容输出单元,用于当调用处理业务逻辑的主模块时,所述主模块根据预先定义的日志优选级,输出各个子模块对应的日志内容。
8.根据权利要求8所述的装置,其特征在于,日志添加单元,包括:
错误码获取子单元,用于根据所述处理业务逻辑的各个子模块的功能,获取各个子模块对应的错误码;
日志添加子单元,用于将所述错误码添加至对应的各个子模块,从而为所述各个子模块添加日志。
9.根据权利要求8所述的装置,其特征在于,日志内容输出单元,包括:
模块调用子单元,用于当调用处理业务逻辑的主模块时,所述主模块根据业务逻辑调用所述主模块包含的子模块;
日志内容输出子单元,用于所述子模块执行时,处理业务逻辑的主模块根据预先定义的日志优先级,输出被调用的子模块对应的日志内容。
CN202010554138.1A 2020-06-17 2020-06-17 一种面向业务逻辑实现日志输出的方法及装置 Pending CN111897787A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010554138.1A CN111897787A (zh) 2020-06-17 2020-06-17 一种面向业务逻辑实现日志输出的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010554138.1A CN111897787A (zh) 2020-06-17 2020-06-17 一种面向业务逻辑实现日志输出的方法及装置

Publications (1)

Publication Number Publication Date
CN111897787A true CN111897787A (zh) 2020-11-06

Family

ID=73207640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010554138.1A Pending CN111897787A (zh) 2020-06-17 2020-06-17 一种面向业务逻辑实现日志输出的方法及装置

Country Status (1)

Country Link
CN (1) CN111897787A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790779A (en) * 1995-03-10 1998-08-04 Microsoft Corporation Method and system for consolidating related error reports in a computer system
US20030084377A1 (en) * 2001-10-31 2003-05-01 Parks Jeff A. Process activity and error monitoring system and method
CN102143008A (zh) * 2010-01-29 2011-08-03 国际商业机器公司 用于数据中心的诊断故障事件的方法及装置
CN102981943A (zh) * 2012-10-29 2013-03-20 新浪技术(中国)有限公司 监控应用日志的方法及系统
CN104461844A (zh) * 2014-10-31 2015-03-25 大唐移动通信设备有限公司 一种基于规则的日志服务方法
CN106155864A (zh) * 2016-07-29 2016-11-23 北京北信源软件股份有限公司 一种扩展Apache Log4j日志输出级别的方法
CN109376130A (zh) * 2018-10-18 2019-02-22 国云科技股份有限公司 一种基于多云平台的自定义模板记录操作日志的方法
CN109766239A (zh) * 2018-12-25 2019-05-17 努比亚技术有限公司 日志输出控制方法、系统及计算机可读存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790779A (en) * 1995-03-10 1998-08-04 Microsoft Corporation Method and system for consolidating related error reports in a computer system
US20030084377A1 (en) * 2001-10-31 2003-05-01 Parks Jeff A. Process activity and error monitoring system and method
CN102143008A (zh) * 2010-01-29 2011-08-03 国际商业机器公司 用于数据中心的诊断故障事件的方法及装置
US20110191630A1 (en) * 2010-01-29 2011-08-04 International Business Machines Corporation Diagnosing a fault incident in a data center
CN102981943A (zh) * 2012-10-29 2013-03-20 新浪技术(中国)有限公司 监控应用日志的方法及系统
CN104461844A (zh) * 2014-10-31 2015-03-25 大唐移动通信设备有限公司 一种基于规则的日志服务方法
CN106155864A (zh) * 2016-07-29 2016-11-23 北京北信源软件股份有限公司 一种扩展Apache Log4j日志输出级别的方法
CN109376130A (zh) * 2018-10-18 2019-02-22 国云科技股份有限公司 一种基于多云平台的自定义模板记录操作日志的方法
CN109766239A (zh) * 2018-12-25 2019-05-17 努比亚技术有限公司 日志输出控制方法、系统及计算机可读存储介质

Similar Documents

Publication Publication Date Title
US8365196B2 (en) Method and device for log events processing
US10911447B2 (en) Application error fingerprinting
US20200117587A1 (en) Log File Analysis
CN112835924A (zh) 实时计算任务处理方法、装置、设备及存储介质
US11163675B1 (en) Mutation testing in parallel threads
CN112187933A (zh) 一种多架构云平台中服务的监控方法和系统
US8997116B2 (en) Event logging application programming interface (API)
US10680913B1 (en) Error remediation in software as a service (SaaS) portals
CN113094238A (zh) 一种业务系统异常监控方法及装置
Yu et al. Logreducer: Identify and reduce log hotspots in kernel on the fly
WO2007071615A1 (en) Methods, apparatus and computer programs for handling parameters associated with call statements
CN111897787A (zh) 一种面向业务逻辑实现日志输出的方法及装置
US20200117572A1 (en) Problem diagnosis technique of memory corruption based on regular expression generated during application compiling
CN113760491A (zh) 一种任务调度系统、方法、设备及存储介质
CN116599881A (zh) 云平台租户建模测试的方法、装置、设备及存储介质
US11740995B2 (en) Source quality check service
US8819494B2 (en) Automatically changing parts in response to tests
CN111897789B (zh) 一种日志生成方法及装置
CN108959508B (zh) Sql数据生成方法及装置
CN112083952A (zh) 一种基于spring架构的异常处理方法及系统
CN110908870A (zh) 一种大型机的资源监控方法、装置、存储介质及设备
CN117235107B (zh) 数据访问处理方法、装置、电子设备及存储介质
US20220398185A1 (en) Self-optimizing analysis system for core dumps
CN114356643B (zh) 一种遥感卫星处理系统中自动发现任务失败和恢复方法
CN112925667B (zh) 预防sdk崩溃的方法、装置、设备及可读存储介质

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