日志信息输出系统及输出方法技术方案

技术编号:2842375 阅读:278 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种日志信息输出系统,包括日志输出器、控制器以及文件检查器。还涉及一种日志信息输出方法,包括:对各应用模块进行注册,并获得各模块的唯一控制器对象;运行应用模块,控制器对象根据各模块的输出控制信息,输出各模块的日志信息。本发明专利技术通过动态检查文件的方式控制各模块的日志信息的输出;可关闭日志信息非常多且不重要的模块的日志信息,从而提高客户端性能;在运行期通过动态检查目标文件,控制各模块日志信息的输出,当应用程序出现问题时,不必关闭客户端程序,可动态修改目标文件中的日志输出控制信息,快速获得定位信息,缩短开发人员定位问题的时间,降低成本。

【技术实现步骤摘要】

本专利技术涉及日志信息输出技术,尤其涉及能够对输出的日志信息进行控制的。
技术介绍
在应用程序开发的全过程中,无论编写了多少个设计良好的测试用例,即使是最小的应用程序也会在部署到生产环境之后隐藏着一个或多个错误。虽然测试驱动的开发和质量评价(Quality Assessment,简称QA)手段可以提高代码质量并增强对应用程序的信心,但是当某个系统或功能失败时,开发人员和系统管理员需要了解系统的相关执行上下文等调试信息,有了适当的信息,才能确定问题的本质并快速解决问题,从而节省时间和金钱。在Java环境下,尽管已经涌现出了不少调试应用程序的手段,但直接把调试信息输出到文件(或者其他地方)仍然是非常重要的手段,尤其在调试分布式应用程序时,甚至是唯一可以利用的方法。在应用程序中添加日志记录总的来说基于三个目的监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。把信息输出到屏幕,最简单的方法就是使用JDK(Java Developer′s Kitjava开发工具包)提供的System.out.println(Java提供的一个系统方法,输出信息到屏幕)。但是,这样存在一些问题信息的输出不够灵活,并且繁琐。例如,输出的内容为执行处的文件名,行数,当前时间等,显得很原始。如果要改变输出的内容和格式,需要重新编译源程序。更严重的是,如果程序中有很多这样的输出语句,会严重的影响程序的性能。为了解决上面的问题,人们开发了一些专门记录调试信息的软件包,例如,Log4j(Log4j=Log for java)。Log4j由Apache(一个软件组织名)组织开发,可以用于调试信息的输出。现有的Log4j主要由三个重要的组件构成日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级用来指定这条日志信息的重要程度,可以由用户定义,在典型应用中,可将优先级从高到低设定为ERROR(错误)、WARN(警告)、INFO(信息)、DEBUG(调试信息)四种;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而日志信息的输出格式则控制了日志信息的格式和内容。如图1所示,为现有技术中的一种日志输出器结构图,打印日志信息时,获取日志记录器对象,并输出信息;将日志输出器作为一个整体,各个模块都是直接调用日志输出器对调试日志进行打印,这存在如下问题(1)无法针对不同的模块分别控制调试信息开关。无法区分模块,也无法指定某个模块的日志信息是否需要打印。在大型的应用程序中,会打印大量的日志信息,如果将所有模块的日志都输出,则影响性能,导致客户端反映速度慢。(2)无法在运行期更改调试信息开关。无法在程序运行时更改日志是否需要打印的开关设置。如果打开日志调试信息开关,则降低客户端性能,如果关闭日志调试信息开关,则无法第一时间获取日志信息,当出现问题时,如果要打开调试信息开关,则需要关闭客户端程序,修改运行期参数或配置文件,重新启动客户端程序后才能生效。重新启动客户端程序后,无法完全还原当时的运行环境,疑难问题通常都是无法重现的,重启客户端后,问题常常不会再重现,从而无法第一时间获得日志信息,影响定位问题,延长了开发人员定位问题的时间,提高了成本。
技术实现思路
本专利技术的目的在于针对现有技术所存在的无法针对不同的模块分别控制调试信息开关的问题,提供一种应用程序日志信息的输出系统及输出方法,通过动态检查文件的方式控制各模块的日志信息的输出。为了实现上述目的,本专利技术提供了一种日志信息输出系统,其中包括日志输出器,用于输出日志信息;控制器,与所述日志输出器连接,用于控制日志输出器输出应用程序各模块的日志信息;以及文件检查器,与所述控制器连接,用于检查并向控制器输出目标文件中的日志输出控制信息。该系统还可包括输出开关,输出开关与所述文件检查器及控制器连接,文件检查器根据目标文件中的日志输出控制信息,控制输出开关打开或关闭,控制器根据输出开关的状态控制日志输出器输出日志信息。与检查目标文件相比,检查输出开关状态可以节省大量时间,因此通过输出开关状态控制日志信息的输出具有较好的实时性。输出开关的数目可与应用程序包含的模块的数目相同,输出开关与模块一一对应。该系统还可包括定时器,该定时器与文件检查器连接,所述文件检查器根据该定时器的时间信息定时检查目标文件。为了实现上述目的,本专利技术还提供了一种日志信息输出方法,包括以下步骤步骤1、对应用模块进行注册,并获得各模块的唯一控制器对象;步骤2、运行应用模块,控制器对象根据各模块的输出控制信息,输出各模块的日志信息。该方法还可包括检查目标文件的步骤,控制器对象根据目标文件记录的日志输出控制信息,输出各模块的日志信息;或者,根据目标文件记录的日志输出控制信息控制各模块的输出开关打开或关闭,根据各模块的输出开关的状态输出各模块的日志信息。所述的控制各模块的输出开关打开或关闭的步骤可具体为判断各模块的注册信息与目标文件是否匹配,对于匹配的模块,打开该模块的输出开关;对于不匹配的模块,关闭该模块的输出开关。所述的根据输出开关的状态输出各模块的日志信息的步骤可具体为若输出开关为打开状态,则输出该模块的日志信息,若输出开关为关闭状态,则不输出该模块的日志信息。读取判断输出开关状态的时间要远远短于检查目标文件的时间,从而通过开关状态控制日志信息的输出可以节省大量时间,具有较好的实时性。在获得各模块的唯一控制器对象后,启动定时器,根据定时器的时间信息定时检查目标文件,动态调整需输出日志信息的模块的输出控制信息,从而输出相应模块的日志信息。在应用程序运行时,可通过修改目标文件,控制各模块日志信息是否输出。本专利技术通过动态检查文件的方式控制各模块的日志信息的输出;对模块进行区分,设置日志是否需要打印,将日志信息非常多而且不重要的模块的日志信息关闭,从而提高客户端性能;在运行期通过动态检查目标文件,控制各模块日志信息的输出,当应用程序出现问题时,不必关闭客户端程序,可动态修改目标文件中的日志输出控制信息,快速获得定位信息,缩短开发人员定位问题的时间,降低成本;根据目标文件调节输出开关,进而根据输出开关的状态控制日志信息的输出,可大大减少输出日志信息时读取判断控制信息的时间,具有较好的实时性。下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。附图说明图1为现有的日志输出器结构图。图2为本专利技术的日志信息输出系统结构示意图;图3为本专利技术的日志信息输出方法流程图;图4为本专利技术的日志信息输出系统一具体实施例结构示意图;图5为本专利技术的日志信息输出方法一具体实施例流程图。具体实施例方式本专利技术主要实现了在下通过动态检查文件的方式来实现运行期控制各模块的调试信息。如图2所示,为本专利技术的日志信息输出系统结构示意图。该系统包括控制器11、文件检查器12和日志输出器13。控制器11与文件检查器12和日志输出器13连接;文件检查器12,用于检查目标文件中的日志输出控制信息,并将该日志输出控制信息向控制器11输出;控制器11用于控制日志输出器输出应用程序各模块(以下称为应用模块)的日志信息,日志输出器13与本文档来自技高网
...

【技术保护点】
一种日志信息输出系统,其中包括:    日志输出器,用于输出日志信息;    控制器,与所述日志输出器连接,用于控制日志输出器输出各应用模块的日志信息;以及    文件检查器,与所述控制器连接,用于检查并向控制器输出目标文件中的日志输出控制信息。

【技术特征摘要】

【专利技术属性】
技术研发人员:桂君
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

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

1