一种动态多输出日志处理系统转让专利

申请号 : CN200910049346.X

文献号 : CN101593148B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郝黎明

申请人 : 卡斯柯信号有限公司

摘要 :

本发明涉及一种动态多输出日志处理系统,该系统包括自下而上的四层:基础设施服务层、动态输出管理层、日志输出管理器层、日志预处理层,所述的动态输出管理层构建在基础设施服务层之上,向上与日志输出管理器层连接;所述的日志输出管理器层是日志输出管理器的集合,向上与日志预处理层连接;所述的日志预处理层接收日志消息,并对日志消息进行预处理。与现有技术相比,本发明具有开放性结构,可扩展性,形成自身的动态多输出的优点。

权利要求 :

1.一种动态多输出日志处理系统,其特征在于,该系统包括自下而上的四层:基础设施服务层、动态输出管理层、日志输出管理器层、日志预处理层,所述的动态输出管理层构建在基础设施服务层之上,向上与日志输出管理器层连接;所述的日志输出管理器层是日志输出管理器的集合,向上与日志预处理层连接;所述的日志预处理层接收日志消息,并对日志消息进行预处理;所述的动态输出管理层对日志输出管理器进行管理,包括以下步骤:经过日志预处理层预处理后的日志消息在输入到日志输出管理器之前,首先检测日志消息是否输入到多个相同的日志输出管理器,若为是,则选择一个日志输出管理器;若为否,则检测是否有多个日志输出管理器指向同一个输出目的地,若为是,则选择一个日志输出管理器,若为否,则输入到日志输出管理器,并输出日志消息;检测输出日志消息是否成功,若输出失败,则选择备用日志输出管理器。

2.根据权利要求1所述的一种动态多输出日志处理系统,其特征在于,所述的日志预处理层,在将日志消息输入到日志输出管理器层之前对日志消息进行预处理,该预处理包括有效性验证、优先级定义、安全增强、日志过滤、日志封装;其中,所述的有效性验证包括验证日志格式的有效性、时间的有效性等;所述的优先级定义包括根据日志消息的来源和等级定义;所述的安全增强是对需要保证日志消息的机密性而进行加密或签名操作;所述的日志过滤包括过滤有无效来源或级别的日志、过滤在来源和级别过滤列表中的日志;所述的日志封装是根据日志格式需求对日志按Syslog标准进行封装。

3.根据权利要求1所述的一种动态多输出日志处理系统,其特征在于,所述的基础设施服务层为体系结构的最低一层,包括队列互斥锁模块、异常管理模块、线程安全队列模块、线程模块、XML模块、安全模块、阻塞/非阻塞模块功能组件模块,所述的基础设施服务层为基础设施服务层上三层功能的实现提供功能服务组件。

4.根据权利要求1所述的一种动态多输出日志处理系统,其特征在于,所述的日志输出管理器层中的每一个日志输出管理器均可接收日志消息,并将日志消息以预设的格式输出到预设的输出目的地。

说明书 :

一种动态多输出日志处理系统

技术领域

[0001] 本发明涉及一种日志消息处理体系结构,尤其涉及一种动态多输出日志处理系统。

背景技术

[0002] 在软件系统中,需要日志功能来记录软件系统运行过程中所发生的事件。构建适用于软件系统日志功能需求的日志处理体系结构是软件领域所关注的一个重点。目前的一些日志模块有Log4cpp、Log4j、Log4cxx等,这些模块提供了统一的日志输入接口,通过一个或多个日志输出管理器将日志写到文件、日志服务器,或数据库等位置(称之为输出目的地)。然而,在这些系统中,将日志通过不同的日志输出管理器输出到输出目的地时,每个日志输出管理器之间的关系是相互独立的,即每个日志输出管理器接收软件系统输入的日志消息并输出到输出目的地,而不考虑其他日志输出管理器的输出情况。这样可能导致的问题有:
[0003] (1)若同一个日志输出管理器被复制多次,则同一条日志会被多次输出到同一个输出目的地;
[0004] (2)若不同的日志输出管理器输出指向同一个输出目的地,则同一条日志会被多次输出到同一个输出目的地;
[0005] (3)若某个日志输出管理器在将日志输出到输出目的地时失败,因每个日志输出管理器彼此之间的独立性,导致日志输出失败。
[0006] 这样,前两个问题带来的结果是:一方面写入了重复的日志消息,另一方面占用了更多的资源,造成资源浪费;第三个问题带来的结果是日志输出失败率较高。在这种情况下,为了解决上述问题,提出了一种动态多输出日志处理系统。经文件检索发现,目前没有这方面的体系结构。
[0007] 发明内容
[0008] 本发明的目的就是为了克服上述现有技术存在的缺陷,提供一种可提高日志输出成功率的动态多输出日志处理系统。
[0009] 本发明的目的可以通过以下技术方案来实现:一种动态多输出日志处理系统,其特征在于,该系统包括自下而上的四层:基础设施服务层、动态输出管理层、日志输出管理器层、日志预处理层,所述的动态输出管理层构建在基础设施服务层之上,向上与日志输出管理器层连接;所述的日志输出管理器层是日志输出管理器的集合,向上与日志预处理层连接;所述的日志预处理层接收日志消息,并对日志消息进行预处理。
[0010] 所述的日志预处理层,在将日志消息输入到日志输出管理器层之前对日志消息进行预处理,该预处理包括有效性验证、优先级定义、安全增强、日志过滤、日志封装;其中,所述的有效性验证包括验证日志格式的有效性、时间的有效性等;所述的优先级定义包括根据日志消息的来源和等级定义;所述的安全增强是对需要保证日志消息的机密性而进行加密或签名操作;所述的日志过滤包括过滤有无效来源或级别的日志、过滤在来源和级别过滤列表中的日志;所述的日志封装是根据日志格式需求对日志按Syslog标准进行封装。
[0011] 所述的基础设施服务层为体系结构的最低一层,包括队列互斥锁模块、异常管理模块、线程安全队列模块、线程模块、XML模块、安全模块、阻塞/非阻塞模块等功能组件模块,所述的为基础设施服务层上三层功能的实现提供功能服务组件。
[0012] 所述的动态输出管理层对日志输出管理器进行管理,包括以下步骤:经过日志预处理层预处理后的日志消息在输入到日志输出管理器之前,首先检测日志消息是否输入到多个相同的日志输出管理器,若为是,则选择一个日志输出管理器;若为否,则检测是否有多个日志输出管理器指向同一个输出目的地,若为是,则选择一个日志输出管理器,若为否,则输入到日志输出管理器,并输出日志消息;检测输出日志消息是否成功,若输出失败,则选择备用日志输出管理器。
[0013] 所述的日志输出管理器层中的每一个日志输出管理器均可接收日志消息,并将日志消息以预设的格式输出到预设的输出目的地。
[0014] 与现有技术相比,本发明具有开放性结构,可扩展性,形成自身的动态多输出的优点。
[0015] 附图说明
[0016] 图1是本发明一种动态多输出日志处理系统的结构原理图;
[0017] 图2是本发明一种动态多输出日志处理系统中动态输出管理层的管理流程图。

具体实施方式

[0018] 以下结合具体实施例对本发明做进一步说明。
[0019] 如图1所示,本体系结构由下至上共四层:
[0020] 1.基础设施服务层:
[0021] 基础设施服务层为体系结构的最低一层,实现基本功能,这层向上与动态输出管理层连接,为以上三层功能的实现提供功能服务组件,如图1所示,如:队列互斥锁模块、异常管理模块、线程安全队列模块、线程模块、XML模块、安全模块、阻塞/非阻塞模块等,一个功能组件模块对应一个服务。在图1中,为了表示方便,用一个箭头符号代表多个组件模块。如图中的线程安全队列模块,代表的是线程安全单向队列模块和线程安全双向队列模块,该组件模块向上层提供线程安全队列,一个接口对应一种类型的基本服务,只要通过同一接口来调用即可。以这种组件的形式,用户在使用组件提供的服务时并不需要考虑服务的底层实现,也可以方便灵活地通过增减组件模块的数目来增减平台提供的基本服务,达到了基础设施服务与上层体系结构的无缝连接。
[0022] 2.动态输出管理层:
[0023] 动态输出管理层是基于基础设施服务层之上,基于日志输出策略和输出状态对日志输出管理器进行管理,以避免输出重复日志消息,并提高日志输出的成功率。动态输出管理层是该体系结构的核心,其流程如图2所示。经过预处理后的日志消息在输入到日志输出管理器之前,首先判断日志消息是否输入到多个相同的日志输出管理器,若是,则选择一个日志输出管理器;若否,则判断是否有多个指向同一个输出目的地的日志输出管理器,若有,则选择一个日志输出管理器,若无,则输入到日志输出管理器。日志输出管理器输出日志消息后,若输出失败,例如远程发送日志消息失败,则选择备用日志输出管理器,例如写到本地文件。
[0024] 3.日志输出管理器层:
[0025] 日志输出管理器层,该层中每个符合体系结构标准的日志输出管理器均可以以插件或组件形式纳入到体系结构中。每一个日志输出管理器可以接收日志并输出到相应的输出目的地,其彼此之间是独立的,由日志输出管理层来管理之间的关系。
[0026] 4.日志预处理层:
[0027] 所述的日志预处理层,在将日志消息输入到日志管理器之前对日志进行预处理,包括有效性验证、优先级定义、安全增强、日志过滤、日志封装。其中,有效性验证的内容包括验证日志格式的有效性、时间的有效性等;日志的优先级包括来源和等级;若需要保证日志消息的机密性,则需进行加密或签名操作;过滤的日志包括无效的来源或级别,或在来源和级别过滤列表中;最后根据日志格式需求对日志按Syslog标准进行封装,封装好的日志根据动态输出策略输入到日志输出管理器中。
[0028] 一种计算机软件领域的动态多输出日志处理系统,由下至上包括基础设施服务层、动态输出管理层、日志输出管理器层、日志预处理层。基础设施服务层为最低一层,与动态输出管理层连接;动态输出管理层构建在基础设施服务层之上,基于日志输出策略和输出状态对上层的日志输出管理器进行管理;日志输出管理器层是日志输出管理器的集合,向下通过软件接口与动态输出管理层连接,向上与日志预处理层连接;日志预处理层在以下三层之上对日志消息进行处理,该层面向应用软件提供接口,接收软件系统生成的日志消息。本发明具有开放性结构、可扩展性、形成自身的动态多输出的特点。
[0029] 本发明的目的是针对现有日志处理体系结构的不足,提出了一种动态多输出日志处理系统,使其能够满足软件系统日志功能方面所需,保证日志输出的不重复性,并能通过不同日志输出管理器之间协作提高日志输出的成功率。在本发明结构中,对日志输出管理器彼此之间关系策略进行设定,根据这种策略确定每个日志输出管理器指向唯一的输出目的地,且当某个日志输出管理器输出日志失败时,由其他的日志输出管理器对日志进行处理来提高日志输出的成功率。
[0030] 本发明是通过以下技术方案实现的,本发明首先基于现有基础设施服务,采用分级的思想对软件系统所生成的日志消息进行处理。由下至上包括以下四层:基础设施服务层、动态输出管理层、日志输出管理器层、日志预处理层。基础设施服务层为最低一层,与动态输出管理层连接;动态输出管理层构建在基础设施服务层之上,基于日志输出策略和输出状态对上层的日志输出管理器进行管理;日志输出管理器层是日志输出管理器的集合,向下通过软件接口与动态输出管理层连接,向上与日志预处理层连接;日志预处理层在以下三层之上对日志消息进行处理,该层面向应用软件提供接口,接收软件系统生成的日志消息。
[0031] 所述的基础设施服务层,为体系结构的最低一层,这层通过软件接口来与动态输出管理层连接,是本体系结构所依赖的基本软件组件。
[0032] 所述的动态输出管理层,基于日志输出策略和输出状态对日志输出管理器进行管理,以避免输出重复日志消息,并提高日志输出的成功率。
[0033] 所述的日志输出管理器层,是日志输出管理器的集合。在这层中,每一个日志输出管理器均可以接收日志消息,并将日志以特定的格式输出到特定的输出目的地。该层构建在上层传递进来的日志消息以及下两层服务的基础之上,其中基础设施服务层为其提供了相应的软件组件;动态输出管理层根据输出策略和输出状态管理其行为。
[0034] 所述的日志预处理层,在将日志消息输入到日志管理器之前对日志进行预处理,包括有效性验证、优先级定义、安全增强、日志过滤、日志封装。
[0035] 本发明在基础设施服务层之上,首先根据体系结构所应用的具体环境,设定日志消息的输出策略,这些策略是应用于特定环境的日志输出的基础。其次,在策略制定的基础之上,结合输出策略和输出状态向日志输出管理器输入日志消息。在向日志输出管理器输入日志消息之前,需对日志进行预处理,处理的内容包括验证日志的有效性、定义日志优先级、过滤日志、封装日志,若需要保证日志消息的安全性,还需要执行加密、签名等操作。这样此体系就能灵活应用于不同的日志需求环境中,按本发明提出的体系结构来构建日志处理模块,具有以下特征:开放性结构,可扩展性,形成自身的动态多输出的特点。