一种基于规则的日志服务方法

文档序号:6632566阅读:168来源:国知局
一种基于规则的日志服务方法
【专利摘要】本发明公开了一种基于规则的日志服务方法,包括如下步骤:将系统划分成不同的子系统或模块;将系统输出日志信息划分为不同级别;按不同的子系统或模块预先设置可输出日志信息的级别;按预先设置的可输出日志信息级别输出日志信息。本发明无需重新编译版本,即可在发布版本根据需要决定是否输出详细级别的调测信息;可支持对各子系统中各模块的打印开关进行精确控制,从而有效避免不关心的模块的过多打印造成的困扰;可支持对各子系统中模块的、区分级别的打印频率的精确控制;可支持对同一个模块内的连续重复的日志信息的过滤。
【专利说明】—种基于规则的日志服务方法

【技术领域】
[0001]本发明涉及一种日志服务方法,特别涉及一种基于规则的日志服务方法,属于系统开发【技术领域】。

【背景技术】
[0002]在现代系统设计开发过程中,尤其是一些大中型系统,往往规模庞大,伴随而来的是系统流程比较复杂。如何定位和解决系统生命周期中各个阶段的缺陷与问题,就成为了系统开发人员所必须要面临的一个问题。
[0003]目前,最简单且常见的定位方法是随着系统的运行或数据流的驱动,打印输出相应时刻的信息作为日志记录,可方便问题的分析与定位。现有的这种方法不足的是,由于日志打印函数的执行效率很低,频繁的日志输出往往会对系统性能造成明显影响。因此,为避免这种问题,目前业界通常的做法是在开发伊始就规划调试版本和发布版本。在调试版本中,系统开发人员往往会输出很多的调测信息以帮助可能问题的分析定位。而在发布版本中,则通过一个宏开关来关闭调测打印日志功能。按这种方式又造成了另外一个问题,即在发布版本中一旦出现问题,往往会因为没有可供分析的日志信息而无法有效地分析和定位。
[0004]通常,在系统调试版本编译时会定义DEBUG宏开关,故此时所有的日志都将打印输出到串口或者日志文件中。而在发布版本中由于不会定义DEBUG宏开关,编译时即已去除了相关打印的功能,因而提升了系统执行性能。但随之而来的是相关信息的缺失可能造成运行中的问题定位困难。现有的调试打印技术存在以下缺点:往往只在编译生成的调测版本中才存在,在发布版本中通过宏开关去除了这部分功能;调试打印没有按照模块或者信息的重要级别进行控制,过多的调试打印可能引起CPU占用率过高、干扰任务调度等新的问题,同时太多的打印也造成人工分析工作量的加大。


【发明内容】

[0005]本发明要解决的技术问题是:在系统产品的发布版本中,如何做到:既能在需要的时候提取定位问题所需的详细日志信息,同时又不显著降低系统性能。
[0006]为实现上述的发明目的,本发明提供了一种基于规则的日志服务方法,包括如下步骤:
[0007]将系统划分成不同的子系统或模块;
[0008]将系统输出日志信息划分为不同级别;
[0009]按不同的子系统或模块预先设置可输出日志信息的级别;
[0010]按预先设置的可输出日志信息级别输出日志信息。
[0011]其中较优地,所述将系统划分成不同的子系统或模块的步骤包括:根据系统的架构或功能按实际情况划分成不同级别的子系统或模块。
[0012]其中较优地,所述将系统划分成不同的子系统或模块的步骤之后,为每个划分后的子系统或模块分配一个唯一的识别标识。
[0013]其中较优地,所述将系统输出日志信息划分为不同级别的步骤是按日志信息重要程度划分为相应的不同级别。
[0014]其中较优地,所述可输出日志信息的级别是最低容许打印输出的级别阈值。
[0015]其中较优地,所述按预先设置的可输出日志信息的级别输出日志信息的步骤包括:
[0016]当前可输出日志信息的级别与预先设置的可输出日志信息级别比较:
[0017]如果当前产生的日志信息级别不低于预先设置的可输出日志信息的级别,则输出日志信息;
[0018]如果当前产生的日志信息级别低于预先设置的可输出日志信息的级别,则不输出日志信息。
[0019]其中较优地,所述日志信息是通过API接口输出的,
[0020]所述API接口包括子系统ID、模块ID、打印日志信息的级别、待输出日志信息。
[0021]其中较优地,所述不同级别的日志信息以不同形式输出。
[0022]其中较优地,还包括过滤重复日志的步骤:
[0023]记录相应模块的最后一条日志信息的输出内容;
[0024]在每条日志信息输出时,均与上一条日志信息内容相比较,若相同,则仅进行过滤计数;
[0025]若不同,且过滤计数器为非0值,则先输出上一条日志信息的重复次数信息,然后再输出本次的日志信息,并将过滤计数器清0。
[0026]其中较优地,还包括对特定模块的打印频率的精确控制步骤:
[0027]按日志信息级别设置最大打印频率;
[0028]当该模块在一定周期内的实际打印的频率超过设置最大打印频率时将限制输出。
[0029]本发明提供的基于规则的日志服务方法,无需重新编译版本,即可在系统发布版本根据需要决定是否输出详细级别的调测信息;可支持对各子系统中各模块的打印开关进行精确控制,从而有效避免不关心的模块的过多打印造成的困扰;可支持对各子系统中模块的、区分级别的打印频率的精确控制;可支持对同一个模块内的连续重复的日志信息的过滤。

【专利附图】

【附图说明】
[0030]图1是本发明基于规则的日志服务方法流程示意图。

【具体实施方式】
[0031]下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0032]如图1所示,本发明提供一种基于规则的日志服务方法,其特征在于,包括如下步骤:将系统划分成不同的子系统或模块;将系统输出日志信息划分为不同级别;按不同的子系统或模块预先设置可输出日志信息的级别;按预先设置的可输出日志信息级别输出日志信息。下面对本发明提供的基于规则的日志服务方法展开详细的说明。
[0033]首先,介绍将系统划分成不同的系统或模块的步骤。
[0034]对系统设计时,可以根据系统的架构或功能按实际情况划分成不同的子系统或模块。例如,一个大的系统划分成多个子系统,每个子系统内又进一步划分成多个子模块。为了更好的定位日志信息的输出,为每个划分后的子系统或模块分配一个唯一的识别标识,例如ID。对划分后的每个子系统分配一个全局唯一的子系统ID,对每个子系统内的各个子模块也分配子模块ID。子模块ID在所属子系统内唯一标识。
[0035]其次,介绍将系统输出日志信息划分为不同级别的步骤。
[0036]在系统开发过程中,将全局规划日志信息按相应的重要程度划分为不同级别,每条输出日志信息在编码时都应明确其所属的级别。日志信息的级别遵循一定规则,一般情况下日志信息由高到低划分为FATAL级别、MP0RT级别、ERROR级别、WARN级别、INFO级别、DEBUG级别。本发明中的日志信息级别含义举例如下:
[0037]FATAL级别:致命错误的日志信息。例如:可引起单板复位或网元瘫痪的故障可归为这一级别。
[0038]IMPORT级别:重要级别的日志信息。例如:可导致业务流程失败故障可归为这一级别。
[0039]ERROR级别:一般失败,用于调用函数出现错误等一般性错误的日志信息。
[0040]WARN级别:警告信息,主要应用场景是:用于出现那些不期望、但又不至于引起错误的分支或条件时进行打印,以提醒人们关注。
[0041]INFO级别:系统运行中的一些概略信息。如消息ID,消息长度等。
[0042]DEBUG级别:系统运行中调试级别的详细信息。如码流等,适合调测和更细致问题的分析定位。
[0043]再次,介绍按不同的子系统或模块预先设置可输出日志信息的级别的步骤。
[0044]为了实现区分模块、区分待输出日志信息级别的运行日志信息的输出控制,以实现精确范围内的输出。维护人员需要预先设置当前子系统或模块可输出日志信息的级别。例如:当前可输出日志信息的级别可以是指一个用于允许维护人员动态设置的、最低容许打印输出的级别阈值。如果当前产生的日志信息级别不低于预设阈值,则输出日志信息;如果当前产生的日志信息级别低于预设阈值,则不输出日志信息。优选的,将仅允许相应模块中日志信息级别不低于当前可输出级别的打印信息输出,其他级别不会输出。应当可以理解,预先设置可输出日志信息级别时不仅限于此,用户也可以根据自身产品的特点而采用其他的策略,例如采用掩码的方式选择只输出某几个级别的打印信息。在本发明中,对每一个子系统下的每一个模块分别保存其当前可输出级别。当待输出信息的级别低于预设当前可输出级别时,系统不会执行打印相关动作,因而可大大避免对性能的影响。维护人员可以通过一定的手段修改或查询目标子系统和目标模块的预设当前可输出级别。
[0045]最后,介绍按预先设置的可输出日志信息级别输出日志信息的步骤。
[0046]为了进一步精确控制不同子系统或模块的待输出信息级别,以实现范围内的打印允许与禁止,本发明提供用于分级打印的API (Applicat1n Programming Interface,应用程序编程)接口(例如,log_print函数)。API接口至少包含子系统ID、模块ID、打印日志信息的级别,以及待输出日志信息等。API接口内部根据维护人员指定的子系统ID和/或模块ID对应的可输出日志信息级别,并与待输出日志信息级别进行比较,以确定是否输出日志信息。
[0047]在本发明的一个实施例中,为方便维护人员精确控制输出的日志信息,还对输出日志信息提供OFF级别,用于维护人员动态关闭日志信息输出。一旦设置当前可输出级别为OFF级别,则相应模块将不再输出任何级别的日志信息,直至再次设置“当前可输出级另IJ”为非OFF级别。
[0048]在本发明的另一个实施例中,更深入地,产品可以统一规划不同级别的日志信息的记录形式。例如,对于WARN级别和DETAIL级别的日志信息输出,可以直接打印到串口上,也可以重定向某个临时文件中;而对于FATAL级别和MP0RT级别的信息,则应该写入系统的运行日志信息,以供日常维护使用。
[0049]在本发明的另一个实施例中,为有效避免同一日志信息的连续重复的输出,还提供一种过滤重复日志信息的步骤,具体为:在日志信息输出函数中,记录相应模块的最后一条日志信息的输出内容;在每条日志信息输出时,均与上一条日志信息内容相比较,若相同,则仅进行过滤计数;若不同,且过滤计数器为非0值,则先输出上一条日志信息的重复次数信息,然后再输出本次的日志信息,并将过滤计数器清0。
[0050]在本发明的另一个实施例中,还提供一种对特定模块的打印频率的精确控制步骤,具体为:在系统运行过程中,可能存在某个模块的日志信息输出太过频繁而造成CPU繁忙,甚至造成本模块或其他模块的更重要日志信息的丢失,此时,可考虑给除FATAL和IMPORT之外的其他信息级别分别设置最大打印频率,当该模块在某个周期内的实际打印的频率超过允许的频率时将限制输出。例如:假设在系统中已经设置某子系统下的某模块的DETAIL级别的最大打印频率为每5秒100次,则系统可每间隔5秒就重新设置最大次数为100次;在此期间,该模块每打印一次DETAIL级别的信息该计数器就自减一次,当该计数器减至0时,将不再允许输出,从而实现对打印频率的控制,降低CPU消耗。
[0051]综上所述,本发明提供的基于规则的日志服务方法,在方便提取打印输出的信息促进问题定位与不影响系统性能这两者之间提供一种平衡方法,既能在需要的时候提取定位问题所需的详细日志信息,同时又不显著降低系统性能。采用本发明,相对于传统方法具有如下优点:(1)无需重新编译版本,即可在发布版本根据需要决定是否输出详细级别的调测信息;(2)可支持对各子系统中模块的打印开关进行精确控制,从而有效避免不关心的模块的过多打印造成的困扰;(3)可支持对各子系统中模块的、区分级别的打印频率的精确控制;(4)可支持对同一个模块内的连续重复的日志信息的过滤。
[0052]以上实施方式仅用于说明本发明,而并非对本发明的限制,有关【技术领域】的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
【权利要求】
1.一种基于规则的日志服务方法,其特征在于,包括如下步骤: 将系统划分成不同的子系统或模块; 将系统输出日志信息划分为不同级别; 按不同的子系统或模块预先设置可输出日志信息的级别; 按预先设置的可输出日志信息级别输出日志信息。
2.如权利要求1所述的日志服务方法,其特征在于,所述将系统划分成不同的子系统或模块的步骤包括:根据系统的架构或功能按实际情况划分成不同级别的子系统或模块。
3.如权利要求1所述的日志服务方法,其特征在于,所述将系统划分成不同的子系统或模块的步骤之后,为每个划分后的子系统或者模块分配一个唯一的识别标识。
4.如权利要求1所述的日志服务方法,其特征在于,所述将系统输出日志信息划分为不同级别的步骤是按日志信息重要程度划分为相应的不同级别。
5.如权利要求1所述的日志服务方法,其特征在于,所述可输出日志信息的级别是最低容许打印输出的级别阈值。
6.如权利要求5所述的日志服务方法,其特征在于,所述按预先设置的可输出日志信息的级别输出日志信息的步骤包括: 当前可输出日志信息的级别与预先设置的可输出日志信息级别比较: 如果当前产生的日志信息级别不低于预先设置的可输出日志信息的级别,则输出日志信息; 如果当前产生的日志信息级别低于预先设置的可输出日志信息的级别,则不输出日志信息。
7.如权利要求1所述的日志服务方法,其特征在于,所述日志信息是通过API接口输出的, 所述API接口包括子系统ID、模块ID、打印日志信息的级别、待输出日志信息。
8.如权利要求1所述的日志服务方法,其特征在于,所述不同级别的日志信息以不同形式输出。
9.如权利要求1-8任意一项所述的日志服务方法,其特征在于,还包括过滤重复日志的步骤: 记录相应模块的最后一条日志信息的输出内容; 在每条日志信息输出时,均与上一条日志信息内容相比较,若相同,则仅进行过滤计数; 若不同,且过滤计数器为非O值,则先输出上一条日志信息的重复次数信息,然后再输出本次的日志信息,并将过滤计数器清O。
10.如权利要求1-8任意一项所述的日志服务方法,其特征在于,还包括对特定模块的打印频率的精确控制步骤: 按日志信息级别设置最大打印频率; 当该模块在一定个周期内的实际打印的频率超过设置最大打印频率时将限制输出。
【文档编号】G06F11/34GK104461844SQ201410602323
【公开日】2015年3月25日 申请日期:2014年10月31日 优先权日:2014年10月31日
【发明者】赵金芳 申请人:大唐移动通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1