首页> 中国专利> 用于在分布式信息系统中记录和分析日志的方法和装置

用于在分布式信息系统中记录和分析日志的方法和装置

摘要

本发明公开了一种在分布式信息系统中记录与一个事务实例有关的日志的方法。该方法包括:从日志服务器获取日志代理实例,该日志代理实例至少包括与所述事务实例有关的信息以及与在所述事务实例中当前运行的组件有关的信息;基于所述日志代理实例,记录所述事务实例的日志。根据本发明的实施方式还提供一种便于记录日志的方法和分析日志的方法。而且,根据本发明的实施方式还提供相应的装置和系统。

著录项

  • 公开/公告号CN103377116A

    专利类型发明专利

  • 公开/公告日2013-10-30

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201210129918.7

  • 发明设计人 孙岩;魏彬彬;潘章晟;史金良;

    申请日2012-04-27

  • 分类号G06F11/34(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人王茂华;赵林琳

  • 地址 美国纽约阿芒克

  • 入库时间 2024-02-19 20:43:39

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-04-04

    未缴年费专利权终止 IPC(主分类):G06F11/34 专利号:ZL2012101299187 申请日:20120427 授权公告日:20160210

    专利权的终止

  • 2016-02-10

    授权

    授权

  • 2013-11-27

    实质审查的生效 IPC(主分类):G06F11/34 申请日:20120427

    实质审查的生效

  • 2013-10-30

    公开

    公开

说明书

技术领域

本发明涉及分布式信息系统,更具体地,涉及用于在分布式信息系统中记 录和分析日志的方法和装置。

背景技术

在复杂的分布式信息系统中,例如符合通用对象请求代理架构CORBA (Common Object Request Broker Architecture)的系统中,通常整合有包括多个组 件的不同的产品,而这些组件可能分布于网络当中。在这样的分布式信息系统 中,分布式应用的一个事务通常会涉及多个组件,而每个组件将单独的记录日 志。

用于这种分布式信息系统的现有的日志系统能够获取并存储来自不同节点 的日志文件,或者将日志文件转发到日志处理程序。在实践中,存在这样一种 需要:对某个特定事务的全部日志进行分析,这些日志可能是由分布在多个节 点上的组件独立记录的。

发明内容

但是,现有的日志系统无法分析由分布在不同节点上的不同组件所记录的 针对特定事务的日志。为了解决现有技术中存在的技术问题,在本发明的实施 方式提出一种用于在分布式信息系统中记录和分析日志的技术方案。

根据本发明实施方式的一个方面,提供一种在分布式信息系统中记录日志 的方法,其中该日志与一个事务实例有关。该方法包括:从日志服务器获取日 志代理实例,该日志代理实例至少包括与所述事务实例有关的信息以及与在所 述事务实例中当前运行的组件有关的信息;基于所述日志代理实例,记录所述 事务实例的日志。

根据本发明实施方式的另一方面,提供一种在分布式信息系统中便于多个 组件记录日志的方法。该方法包括:根据事务类型定义初始化事务实例和日志 代理实例,其中事务类型定义包括在该类型的事务中多个组件的调用关系;向 所述事务实例中当前运行的组件提供日志代理实例,该日志代理实例至少包括 与所述事务实例有关的信息以及与在所述事务实例中当前运行的组件有关的信 息。

根据本发明实施方式的另一方面,提供一种在分布式信息系统中分析日志 的方法。该方法包括:接收分析关于事务实例的日志的请求,该请求至少包括 与所述事务实例有关的信息;根据事务实例定义确定所述事务实例涉及的多个 组件以及其调用关系;基于与所述事务实例有关的信息,从所述多个组件获取 与所述事务实例有关的日志;至少部分地按照组件间的调用关系,对获取的日 志进行分析处理。

根据本发明实施方式的一个方面,提供一种在分布式信息系统中记录日志 的装置,其中该日志与一个事务实例有关。该装置包括:用于从日志服务器获 取日志代理实例的装置,该日志代理实例至少包括与所述事务实例有关的信息 以及与在所述事务实例中当前运行的组件有关的信息;用于基于所述日志代理 实例记录所述事务实例的日志的装置。

根据本发明实施方式的另一方面,提供一种在分布式信息系统中便于多个 组件记录日志的装置。该装置包括:用于根据事务类型定义初始化事务实例和 日志代理实例的装置,其中事务类型定义包括在该类型的事务中多个组件的调 用关系;用于向所述事务实例中当前运行的组件提供日志代理实例的装置,该 日志代理实例至少包括与所述事务实例有关的信息以及与在所述事务实例中当 前运行的组件有关的信息。

根据本发明实施方式的另一方面,提供一种在分布式信息系统中分析日志 的装置。该装置包括:用于接收分析关于事务实例的日志的请求的装置,该请 求至少包括与所述事务实例有关的信息;用于根据事务实例定义确定所述事务 实例涉及的多个组件以及其调用关系的装置;用于基于与所述事务实例有关的 信息从所述多个组件获取与所述事务实例有关的日志的装置;用于至少部分地 按照组件间的调用关系对获取的日志进行分析处理的装置。

根据本发明实施方式的另一方面,提供一种分布式信息系统,包括多个组 件以及日志服务器,其中所述多个组件的每一个包括根据本发明实施方式的用 于在分布式信息系统中记录日志的装置,并且所述日志服务器包括根据本发明 实施方式的用于在分布式信息系统中便于多个组件记录日志的装置和在分布式 信息系统中分析日志的装置。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以 及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中, 相同的参考标号通常代表相同部件。

图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。

图2示出了根据本发明一个实施方式的分布式信息系统的示意性架构。

图3示意性示出了根据本发明的示例性实施方式的在分布式信息系统中记 录日志的方法的流程图。

图4示意性示出了根据本发明的示例性实施方式的在分布式信息系统中便 于多个组件记录日志的方法的流程图。

图5示意性示出在一个事务期间跨多个组件进行日志处理的具体示例。

图6示意性示出了根据本发明的示例性实施方式的在分布式信息系统中分 析日志的方法的流程图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了 本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被 这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透 彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。 如图1所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随 机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、 键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、 硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在 这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘 控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器 109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行 外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制 器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的 结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下, 可以根据具体情况增加或减少某些设备。

所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程 序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也 可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结 合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中, 本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形 式,该计算机可读介质中包含计算机可读的程序代码。

可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以 是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可 以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或 器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的 列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机 存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM 或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储 器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是 任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件 使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据 信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种 形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计 算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介 质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或 者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—— 但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。 可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计 算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、 Smalltalk、C++,还包括常规的过程式程序设计语言-诸如”C”语言或类似的程 序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机 上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机 上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中, 远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)- 连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供 商来通过因特网连接)。

下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程 图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和 /或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令 可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从 而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装 置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。

也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理 装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的 指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指 令装置(instruction means)的制造品(manufacture)。

也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其 它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列 操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上 执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。

根据本发明各个实施方式提出一种用于在分布式信息系统中记录和分析日 志的技术方案,能够针对某个特定事务实例记录日志并且分析日志。在本文中, 术语“事务实例”是指对于特定事务类型的一个实例,特别在允许并发的系统 中,对于特定事务类型可能存在多个并发的事务实例。相应地,在本文中涉及 的系统部件“实例”是指针对特定“事务实例”所创建的实例,例如日志代理 实例(将在后文中详细描述)。

图2示出了根据本发明一个实施方式的分布式信息系统的示意性架构。

如图2所示,分布式信息系统200包括日志服务器210以及运行应用的多 个组件220。作为示例,图2仅示出3个组件220-1、220-2和220-3(COMP 1、 COMP 2、COMP 3),但是应该理解,在实际的分布式信息系统中可能存在更 多或更少的组件,组件的数量不受所描述示例性实施方式的限制。

日志服务器210至少用于管理各个组件中日志的记录并且能够收集各个组 件中记录的日志并进行分析。日志服务器210连接到日志存储230。在系统初 始化期间,日志服务器210将组件信息以及事务类型定义作为初始化信息存储 于日志存储230中。事务类型定义中可以包括在该类型的事务中有关组件间调 用关系的信息。日志存储230还存储运行时的每个事务实例和对应的日志代理 实例。

根据本发明各个实施方式,事务实例包含一个事务类型中所有的行为,诸 如开始(START)、结束(END)、调用(下一组件)(INVOKE COMP next)、 (自上一组件)返回(RETURN FROM COMP previous)等。例如一个事务实 例的示例可以通过可扩展标识语言(XML)描述如下:

每个事务实例具有与其对应的日志代理实例,该日志代理实例至少包括与 事务实例有关的信息以及与在事务实例中当前运行的组件有关的信息。例如, 一个日志代理实例的示例可以通过XML描述如下:

在该示例中,与事务实例有关的信息包括:

该事务实例的事务类型(transaction type);

唯一识别该事务实例的标识(transaction ID),并且

与在该事务实例中与当前运行的组件有关的信息包括:

与当前组件在事务实例中的调用顺序有关的信息(transaction SEQ,指示组 件的调用序列号),当前组件的名称(current component name),以及

当前的请求标识(current request ID,在传输协议请求消息中(例如是分布 系统通用交互式对象请求代理协议(GIOP)的请求消息报头的一部分)封装的 请求标识,用于将唯一的标识请求消息)。

需要注意的是,虽然在本说明书中使用上述特定信息作为与事务实例有关 的信息和与在该事务实例中与当前运行的组件有关的信息的具体示例并产生有 益的效果,但是应该理解这些信息的内容和形式均是示例性的,本领域的技术 人员可以根据需要采用其它的信息内容/形式、增加其它的信息内容/形式或者省 略其中的某些信息。因此,这里给出的示例并不对本发明的范围构成任何限制。

在图2所示的实施方式中,组件220-1、220-2、220-3中的每一个包括常规 的日志客户端用于请求记录日志文件。根据本发明一个实施方式的系统架构, 日志服务器210通过日志代理与日志客户端进行通信。例如,在一个事务实例 中,日志客户端请求日志书写器记录日志。当收到请求时,日志书写器与日志 代理交换信息,基于对应于当前事务实例的日志代理实例记录事务实例的日志, 其中日志代理实例是由组件的日志代理从日志服务器210获取的。该日志代理 实例至少包括与事务实例有关的信息以及与在事务实例中当前运行的组件有关 的信息。又如,当日志服务器210接收到分析关于特定事务实例的日志的请求 时,日志服务器210根据日志存储230中该事务实例通过各组件中的日志代理 请求日志读取器从日志文件中获取与该事务实例有关的所有日志行,接着至少 按照日志存储230中存储的针对该类型事务的组件间的调用关系对获取的日支 行进行分析处理。

以下参照图3和图4,分别从组件的视角和日志服务器的视角描述根据本 发明的实施方式的在分布式信息系统中记录日志的方法。而后,将参照图4描 述在一个事务期间跨多个组件进行日志处理的具体示例。

图3示意性示出了根据本发明的示例性实施方式的在分布式信息系统中记 录日志的方法的流程图。

如图3所示,在步骤S310中,从日志服务器获取日志代理实例,该日志代 理实例至少包括与事务实例有关的信息以及与在事务实例中当前运行的组件有 关的信息。

在一个实现中,当前组件的日志客户端请求日志书写器记录日志。当前组 件的日志代理按照日志书写器的请求,从日志服务器获取在日志存储中记录的 日志代理实例。所获取的日志代理实例例如具有如上文所述的XML格式。

在步骤S320中,基于日志代理实例,记录事务实例的日志。

在一个实现中,日志书书写器合并获取的日志代理实例,将其作为日志书 写器的属性,记录当前事务实例的日志。日志的每一条包括从日志代理实例获 得的信息的标签:与事务实例有关的信息;与在事务实例中当前运行的组件有 关的信息。日志的每一条还可以包括日志中通常具有的各种信息的标签,例如 从以下组中选择的一项或多项标签信息:时间戳;动作;日志等级等。

例如,所记录日志的每一行例如可以具有如下信息标签:

[TRANSACTION TEYP][TRANSACTION ID][SEQUENCE] [TIMESTAMP][ACTION|LOG Level]

其中:

TRANSACTION TEYP指示事务类型的名称;

TRANSACTION ID指示唯一识别该事务实例的标识;

SEQUENCE指示与当前组件在事务实例中的调用顺序;

TIMESTAMP指示此条日志信息的时间戳,例如,YYYYMMDDHHMMSS;

ACTION指示事务行为。例如,动作可以是START、END、INVOKE或 RETURN。

LOG Level描述日志等级。例如,信息(INFO)、警告(WARNING)、调 试(DEBUG)等。

特定组件针对一个事务实例中的相同日志文件中所有日志行的 [TRANSACTION TEYP][TRANSACTION ID][SEQUENCE]标签是相同的。一 条日志的标签的示例可以是

[TRANSACTION1][000001][2][20100707160000][INFO]

响应于改变事务实例中当前运行组件,在步骤S330中更新日志代理实例, 并向日志服务器同步更新的日志代理实例。

在事务实例中组件之间的相互调用能够引起当前运行组件的改变。改变事 务实例中当前运行组件的可能涉及的动作包括:调用下一组件的动作;返回前 一组件的动作;开始当前组件的动作;结束当前组件的动作。

以调用下一组件的动作为例,例如,组件COMP_1调用组件COMP_2,由 发起调用动作的组件COMP_1更新日志代理实例。例如更新当前的请求标识 (current request ID)。接着,组件COMP_1向日志服务器同步更新后的日志代 理实例。组件COMP_2在开始动作中从日志服务器获取已更新的日志代理实例, 其中该日志代理实例中的“current request ID”与组件COMP_2从组件COMP_1 接收的请求消息头中的请求标志相同,并更新从日志服务器所获取的日志代理 实例。例如,将日志代理实例中的transaction SEQ加1,将current component name 更新为当前的组件COMP_2。接着组件COMP_2向日志服务器同步更新后的日 志代理实例。组件COMP_2基于该更新的日志代理实例记录日志。

图4示意性示出了根据本发明的示例性实施方式的在分布式信息系统中便 于多个组件记录日志的方法的流程图。

如图4所示,在步骤S410中,根据事务类型定义初始化事务实例和日志代 理实例,其中事务类型定义包括在该类型的事务中多个组件的调用关系。

系统初始化阶段,日志服务器将每个组件的信息以及事务类型信息注册到 日志存储。在分布式信息系统中,每个组件可以部署在不同的计算机节点上并 且具有其日志文件。例如,一个组件可以通过XML被描述为:

事务类型定义包括在该类型的事务中多个组件的调用关系。例如事务类型 可以通过XML被描述为:

其中段“component”描述了该类型的事务中涉及的组件;段“relations” 描述了该类型的事务中所涉及组件的调用关系。

在步骤S402中,向事务实例中当前运行的组件提供日志代理实例,该日志 代理实例至少包括与事务实例有关的信息以及与在事务实例中当前运行的组件 有关的信息。

其中,与事务实例有关的信息可以包括:唯一识别事务实例的标识;事务 实例的类型。与在该事务实例中与当前运行的组件有关的信息可以包括:与当 前组件在事务实例中的调用顺序有关的信息;当前组件的名称;请求标识。

响应于改变事务实例中当前运行组件的动作,在步骤S430中,与组件同步 日志代理实例。

其中,改变事务实例中当前运行组件的可能涉及的动作包括:调用下一组 件的动作;返回前一组件的动作;开始当前组件的动作;结束当前组件的动作。

图5示意性示出根据本发明一种实施方式的在一个事务期间跨多个组件进 行日志处理的具体示例。

如图5所示,组件COMP_1是一个事务实例的发起者。在该事务实例中, 组件COMP_1将会调用组件COMP_2,组件COMP_2接着将会调用COMP_3。

日志服务器根据事务类型定义初始化事务实例和日志代理实例,并将注册 在日志存储中。

组件COMP_1的日志客户端请求日志书写器记录日志。日志书写器通过日 志代理从日志服务器获取如下以XML描述的日志代理实例:

日志书书写器使用日志代理实例中的信息生成日志标签,并且将其记录到 组件COMP_1的日志文件中。例如,所生成的日志可以包括这样的标签:

[TRANSACTION1][000001][1][20100707150500][START]

其中,根据本发明的一个实施方式,在该事务实例中,组件COMP_1的每 一条日志均以[TRANSACTION1][000001][1]标签开头。

日志服务器中可以在事务实例中创建相应地XML节点并将其写入日志存 储中记录的相应的事务实例:

当组件COMP_1调用组件COMP_2,该调用动作将写入组件COMP_1的 日志文件,例如:

[TRANSACTION1][000001][1][20100707160000][INVOKE COMP_2]。

日志服务器相应地创建XML节点并写入日志存储中记录的相应的事务实 例:

优选地,组件COMP_1在发起调用时可以根据在传输协议请求消息中封装 的请求标识向日志服务器更新日志代理实例中的“current request ID”,由此支 持在并发事务状态下对于COMP_2的调用。

组件COMP_2的日志客户端请求日志书写器记录日志。组件COMP_2通 过日志代理从日志服务器获取日志代理实例,该日志代理实例中的“current  request ID”与组件COMP_2从组件COMP_1接收的请求消息头中的请求标志 相同,并对其进行更新:“transaction SEQ”的值增加1并且将“current component   name”更新为COMP_2。之后,组件COMP_2通过其日志代理与日志服务器同 步更新后的日志代理实例。组件COMP_2的日志书写器根据当前日志代理实例 的信息生成日志标签,并将“开始”动作记录到COMP_2的日志文件中。例如, 所生成的日志可以包括这样的标签:

[TRANSACTION1][000001][2][20100707160000][START]

其中,根据本发明的一个实施方式,在该事务实例中,组件COMP_2的每 一条日志均以[TRANSACTION1][000001][2]标签开头。

日志服务器中可以在事务实例中创建相应地XML节点并将其写入日志存 储中记录的相应的事务实例:

当组件COMP_2调用组件COMP_3,该调用动作将写入组件COMP_2的 日志文件,例如:

[TRANSACTION1][000001][2][20100707170000][INVOKE COMP_3]

日志服务器相应地创建XML节点并写入日志存储中记录的相应的事务实 例:

优选地,组件COMP_2可以将生成的请求ID上载到日志服务器并且日志 服务器更新日志代理实例中的“currem request ID”,由此支持在并发事务状态 下对于COMP_3的调用。例如,生成的请求ID为000002,当前日志代理实例 是:

组件COMP_3的日志客户端请求日志书写器记录日志。组件COMP_3通 过日志代理从日志服务器获取日志代理实例,该日志代理实例中的“current  request ID”与组件COMP_2从组件COMP_1接收的请求消息头中的请求标志 相同,并对其进行更新:“transaction SEQ”的值增加1并且将“current component   name”更新为COMP_3。之后,组件COMP_3通过其日志代理与日志服务器同 步更新后的日志代理实例。组件COMP_3的日志书写器根据当前日志代理实例 的信息生成日志标签,并将“开始”动作记录到COMP_3的日志文件中。例如, 所生成的日志可以包括这样的标签:

[TRANSACTION1][000001][3][20100707170000][START]

其中,根据本发明的一个实施方式,在该事务实例中,组件COMP_3的每 一条日志均以[TRANSACTION1][000001][3]标签开头。

日志服务器中可以在事务实例中创建相应地XML节点并将其写入日志存 储中记录的相应的事务实例:

当组件COMP_3完成其任务,则其将在日志文件记录结束动作的日志:

[TRANSACTION1][000001][3][20100707180000][END]

日志服务器相应地创建XML节点并写入日志存储中记录的相应的事务实 例:

组件COMP_2的日志书写器根据其日志代理实例的信息记录日志:

[TRANSACTION1][000001][2][20100707180000][RETURN FROM  COMP_3]

日志服务器中可以在事务实例中创建相应地XML节点并将其写入日志存 储中记录的相应的事务实例:

当组件COMP_2完成其任务,则其将在日志文件中记录结束动作的日志: [TRANSACTION1][000001][2][20100707190000][END]

日志服务器相应地创建XML节点并写入日志存储中记录的相应的事务实 例:

组件COMP_1的日志书写器根据其日志代理实例的信息记录日志:

[TRANSACTION1][000001][2][20100707190000][RETURN FROM COMP_2]

日志服务器中可以在事务实例中创建相应地XML节点并将其写入日志存 储中记录的相应的事务实例:

当组件COMP_1完成其任务,则其将在日志文件中记录结束动作的日志:

[TRANSACTION1][000001][1][20100707200000][END]

日志服务器相应地创建XML节点并写入日志存储中记录的相应的事务实 例:

以上参照图5描述了根据本发明一种实施方式的在一个事务期间跨多个组 件进行日志处理的具体示例。可以注意到,在参照图5所描述的示例中,各组 件响应于改变事务实例中当前运行组件的动作,由接受动作的组件更新所获取 的日志代理实例并向日志服务器进行同步,并且各组件针对一个事务实例维持 相同的日志代理实例。在这种情况下,可以将改变事务实例中当前运行组件的 动作仅确定为调用下一组件的动作。但是,应该理解,也可以由发起动作的组 件更新日志代理实例,并向日志服务器同步日志代理实例。在这种情况下,可 以将改变事务实例中当前运行组件的动作确定为调用下一组件的动作、返回前 一组件的动作、开始当前组件的动作、结束当前组件的动作中的某些项。

此外,还应该注意到,虽然在图5给出实施方式中每个组件针对同一事务 实例的日志代理实例的调用序列号transaction SEQ是相同的。但是,也可以为 组件在调用过程中分配连续的序列号(例如,当从组件COMP_3返回COMP_2, 更新对于COMP_2的transaction SEQ为4,当从COMP_2返回COMP_1时, 更新对于COMP_1的transaction SEQ为5),以指示当前组件在整个调用过程 中的顺序。这样的设置可能对于某些日志分析是有利的。因此,本申请并不排 除这样的变形和改进的特征。

因此,本领域的技术人员可以理解,根据本发明的提出的原理,可以根据 需要来设计对日志代理实例进行更新的更新条件、更新过程以及更新内容,而 这些变形和改进均不背离本发明的精神和实质。

图6示意性示出了根据本发明的示例性实施方式的在分布式信息系统中分 析日志的方法的流程图。

在步骤S610中,接收分析关于事务实例的日志的请求,该请求至少包括与 事务实例有关的信息。

例如,日志服务器可以根据请求从日志存储中记录的事务实例中获得该事 务实例的类型和唯一识别事务实例的标识。

在步骤S620中,根据事务实例定义确定事务实例涉及的多个组件以及其调 用关系。

例如在图5所示的示例中,日志服务器可以确定该事务实例涉及组件 COMP_1、COMP_2和COMP_3,并且其调用关系为COMP_1调用COMP_2, COMP_2调用COMP_3,COMP_3返回COMP_2,COMP_2返回COMP_1,结 束。

在步骤S630中,基于与事务实例有关的信息,从多个组件获取与事务实例 有关的日志。

在一个实施方式中,可以从确定的各个组件的日志文件中读取所有具有该 事务实例的类型和唯一识别事务实例的标识的标签的日志。例如,在图5所示 的示例中,日志服务器通过各个组件COMP_1、COMP_2和COMP_3的日志代 理利用日志读取器从日志文件中获取所有以[TRANSACTION1][000001]标签 开头的日志。

在步骤S640中,至少部分地按照组件间的调用关系,对获取的日志进行分 析处理。

在一个实施方式中,日志服务器可以按照日志存储中记录的事务实例,依 据组件间的调用关系,对获取的日志条目进行排序。附加地,可以按照日志的 时间戳顺序对每个组件的日志进行分析处理。响应于一条日志记录有改变事务 实例中当前运行组件的动作,按照组件间的调用关系继续处理从下一组件获取 的日志。改变事务实例中当前运行组件的动作包括从以下组中选择的一项或多 项:调用下一组件的动作;返回前一组件的动作;开始当前组件的动作;结束 当前组件的动作。

具体地,在一种实现中,从来自第一组件的日志文件条目开始按照时间戳 进行排序。当动作为调用动作时,设置保存点并且开始对来自所调用组件的日 志条目按时间戳进行排序。当动作为返回动作,则返回上一保存点,返回处理 来自发起调用的组件的日志条目。按照上述类似的过程继续执行,直到将所有 针对该事务实例获取的日志条目处理完毕。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计 算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图 中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段 或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应 当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图 中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它 们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框 图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用 执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件 与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的, 并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的 情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见 的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对 市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文 披露的各实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号