一种计算机日志的管理方法

文档序号:6393901阅读:170来源:国知局
专利名称:一种计算机日志的管理方法
技术领域
本发明涉及计算机管理技术,具体涉及一种计算机日志的管理方法。
背景技术
计算机日志是在计算机系统运行过程中由系统自身产生或者由对该系统进行监控的监控程序所产生的经过高度提炼的描述信息,这些描述信息主要描述了系统所进行的关键操作以及系统在运行过程中所发生的错误和异常等。一般而言,独立的计算机系统都有自己的日志,这里的计算机系统可以是计算机操作系统,也可以是应用程序,或者是计算机其他层次的系统。通过对系统日志的分析,可以了解系统在运行中经常出现的问题,从而可以有针对性地改善对系统的运营维护,进而提高系统运行的安全和效率。
用户对计算机日志所进行的管理主要是日志检索。这是因为随着系统运行时间的增加,日志文件也随之越来越庞大,即使部分日志对其自身大小有一定限制,但是其包容的描述信息量也是非常大的。所以,为了对日志进行有效管理,就有必要过滤掉用户不关心的内容,而保留用户真正关心的少量内容,例如警告信息或者错误信息等。这种过滤是通过设置检索规则并根据检索规则对日志进行检索来进行的。
目前,在计算机机群系统中,一般是由一台具有管理功能的主机对该机群系统中的其他所有主机的日志实行集中的管理,但是由于不同的主机的操作系统和应用程序都可能不同,而每一种操作系统和应用程序都可能有自己独特格式的日志,也就是说,各种系统日志的格式是不统一的,这样就需要对不同系统日志分别进行不同的管理。在管理主机中,需要针对不同的系统日志设置不同的管理工具,然后再使用不同的管理工具分别管理相应的系统日志,从而使得整个管理过程非常复杂,增加了运营维护的困难。
另外,在系统管理员对日志文件进行检索时,都需要预先设置检索规则。检索规则的设置需要考虑多方面的因素,例如,如果规则过于简单,那么无法过滤掉用户不关心的信息;如果规则过于复杂,又增加了管理操作的难度。因此对系统管理员来说,设置检索规则需要付出很多时间和精力。而对于不同格式的日志,需要分别设置检索规则,从而进一步增加了管理的复杂性。
目前,一般是将被管理主机的日志传输到管理主机,由管理主机进行检索规则的设置并执行相应检索操作,这样可以避免检索规则的下发。但是如果计算机机群系统中被管理主机众多,这些被管理主机都需要将自己的日志发送给管理主机,这样需要占用计算机机群大量的网络带宽。而管理主机需要串行执行对每一个被管理主机的日志文件检索,因此极大地降低了管理主机的工作效率。

发明内容
有鉴于此,本发明的一个目的是提供一种计算机日志的管理方法,可以统一不同日志文件的格式,从而提高系统运行维护的方便性,以及提高日志管理的效率。
本发明的上述目的是通过如下的技术方案予以实现的一种计算机日志的管理方法,至少包括如下步骤a.在计算机上保存所形成的计算机日志文件;b.将不同计算机日志文件所包含的不同格式的日志记录解析成具有统一格式的日志记录;c.对统一格式的日志记录进行管理。
在上述方法中,步骤c中的管理包括在计算机上显示统一格式的日志记录的步骤。并且可以进一步包括筛选统一格式的日志记录的步骤。
其中筛选步骤包括判断是否已经定义了检索规则,如果是,执行下一步;否则定义并保存检索规则,然后执行下一步;创建检索结果缓冲区,并创建包含统一格式的日志记录的日志数据源对象;从日志数据源对象中顺序读取一条日志记录,使用检索规则匹配读取的日志记录,将匹配后得到的日志记录填充到检索结果缓冲区,然后顺序读取下一条日志记录;在匹配了所有日志记录之后,释放日志数据源对象,在计算机上显示匹配后得到的日志记录,释放检索结果缓冲区。
这里的检索规则可以是正向检索规则,这样匹配后得到的日志记录是满足正向检索规则的日志记录;或者,检索规则可以是反向检索规则,匹配后得到的日志记录是除了满足反向检索规则的日志记录之外的所有日志记录。
本发明的计算机日志管理方法可以应用于单机,也可以应用于计算机机群。在应用于计算机机群时,定义检索规则的步骤在管理主机上进行,保存计算机日志文件、解析日志记录、创建和释放检索结果缓冲区、创建和释放日志数据源对象以及读取并匹配日志记录的步骤在被管理主机上进行,在管理主机定义了检索规则之后本发明进一步包括将定义的检索规则或用于标识检索规则的标识信息下发给被管理主机的步骤,被管理主机在匹配了所有日志记录之后进一步包括将匹配后得到的日志记录发送给管理主机的步骤,显示匹配后得到的日志记录是在管理主机上进行的。
此时,在管理主机保存了检索规则之后进一步包括为所保存的检索规则设置一个标识信息,并将检索规则和对应的标识信息发送给被管理主机由被管理主机进行保存,将用于标识检索规则的标识信息下发给被管理主机。
在本发明中,为不同种类的日志文件分别定义相应的检索规则。
本发明的解析步骤包括b1.为不同格式的日志记录定义统一的日志格式;b2.建立用于保存解析后具有统一格式的日志记录的当前日志记录缓冲区,并为每一种日志文件分别设置相应的解析方法;
b3.打开日志文件,读取日志文件中的日志记录并使用步骤b2中的解析方法分别对每一条日志记录解析成具有步骤b1所述的统一的日志格式的日志记录;b4.将解析后具有统一格式的日志记录保存在所述当前日志记录缓冲区中。
在上述方法中,步骤b3中读取日志记录可以是每次从保存在计算机磁盘上的日志文件中读取一条日志记录。
在上述方法中,步骤b3中读取日志记录和解析过程可以包括如下步骤b31.创建一个空的预读缓冲区;b32.从保存在计算机磁盘上的日志文件中一次读取和预读缓冲区缓冲能力相应的大于等于1条的日志记录并填充到预读缓冲区;b33.从预读缓冲区中读取一条日志记录并进行解析,将解析后的结果保存到当前日志记录缓冲区中,然后从预读缓冲区中读取下一条日志记录;b34.在已经读取并解析了当前预读缓冲区中的所有日志记录之后,重复执行步骤b32,并使用新读取的日志记录替代预读缓冲区中原有的日志记录,然后重复执行步骤b33,直到已经读取并解析了该日志文件中的所有日志记录;b35.释放预读缓冲区。
在步骤b31之前可以进一步包括判断是否已经创建一个空的预读缓冲区的步骤,如果是,直接执行步骤b32,否则顺序执行步骤b31和b32。另外,在步骤b32之前进一步包括判断日志文件中是否包含日志记录的步骤,如果是,执行步骤b32,否则结束本流程。
在上述方法中,在步骤b2中通过动态加载函数的形式设置解析方法。
在上述方法中,步骤b1统一的日志格式包括用于标识日志文件的描述对象的日志目标、用于标识日志记录生成时间的产生时间、用于标识日志记录重要程度的日志级别、用于标识日志对象的详细描述信息的日志内容以及用于标识不属于上述四项的其他内容的其它信息。其中,日志目标的描述以及日志目标之间的相互关系在系统运行之前预先定义,并保存在一个单独的配置文件中。并且日志目标之间的相互关系通过可扩展的日志目标树的形式定义。日志级别通过表示日志记录重要程度的非负整数和对该重要程度的文字表述组成的一个二元组来定义。
通过本发明的技术方案可以看出,对于保存在计算机上的不同日志文件所包含的具有不同格式的日志记录,通过采取不同的解析方法解析成具有统一格式的日志记录,从而使本发明可以在一个管理主机上对所有被管理主机上的所有日志文件进行集中统一的管理,极大地提高了日志管理的方便性,降低了管理操作的难度,提高了管理效率。
同时,本发明还可以对具有统一格式的日志记录针对不同的用户需求进行筛选,然后将筛选出的日志记录显示给用户,使用户可以迅速地确定所关心的信息,进一步提高了管理效率。在进行筛选时可以由计算机机群系统中的被管理主机并行进行,从而提高了筛选速度,并因此提高了管理主机的管理效率。
另外,除了能对众多的不同种类的日志文件进行统一管理之外,本发明具有良好的扩展性,不需要对现有计算机机群系统进行大规模修改,就可以极大地提高机群系统的管理效率。另外,对于新增种类的日志文件,只需添加相应的解析方法即可进行管理,因此非常容易扩展。


图1是根据本发明的计算机日志管理方法的总体流程图。
图2是根据本发明的计算机日志管理方法的操作模型示意图。
图3是一个操作系统日志的日志目标树的示意图。
图4是图3经过扩展后的日志目标树的示意图。
图5是根据本发明的统一日志格式的流程图。
图6是根据本发明的解析方法动态加载过程示意图。
图7是根据本发明的使用预读缓冲区技术进行日志记录读取的流程图。
图8是根据本发明的访问有预读缓存的日志记录的方法示意图。
图9是根据本发明的日志筛选层处理流程图。
具体实施例方式
下面结合附图和具体实施例对本发明进行详细说明。
本发明主要通过对不同的日志文件所包含的不同格式的日志记录使用相应的解析方法解析成具有相同统一格式的日志记录,然后再进行相应处理。图1示出了本发明的总体流程,从图1可以看出,本发明的方法主要包括如下步骤步骤101在计算机机群的被管理主机中保存该被管理主机所具有的日志文件。
步骤102解析被管理主机所具有的日志文件,将不同日志文件中所包含的不同格式的日志记录转换为具有统一格式的日志记录。
步骤103对统一格式的日志记录进行筛选,过滤对用户来说没有用处的日志记录,挑选出用户关心的日志记录。
步骤104将挑选出的日志记录所包含的信息显示给用户。
为了实现本发明的总体流程,本发明在逻辑上将日志管理模型分为如图2所示的四个层次,从底层向上分别为日志存储层、日志解析层、日志筛选层和日志表示层。在这四个层次中,日志存储层用于保存和维护各种日志文件,它展现给上层的是各种不同格式的日志文件;日志解析层负责将各种格式的日志文件映射为具有统一格式的日志数据源,这里的日志数据源将在后面详细说明;日志筛选层负责遍历日志数据源中的每一条日志记录,并根据预先设置的过滤规则去掉无用的日志信息,挑选出用户真正关心的日志信息,然后将挑选出的日志信息发送给日志表示层;日志表示层负责配置日志文件的基本信息以及前述预先设置的过滤规则,向下发送日志查询命令,并将下层上传的日志信息显示给用户。
在本发明的一个优选实施例中,日志存储层、日志解析层和日志筛选层位于被管理主机,而日志表示层位于管理主机。也就是说,日志存储层、日志解析层和日志筛选层所负责的操作在被管理主机上执行,日志表示层所负责的操作在管理主机上执行。当然,本发明并不局限于这一种情况,除了日志存储层和日志表示层分别位于被管理主机和管理主机之外,日志解析层和日志筛选层可以同时位于管理主机上,或者日志解析层位于被管理主机上,而日志筛选层位于管理主机上。被管理主机和管理主机之间可以通过TCP/IP等通信协议进行通信。
下面结合前述四个层次对本发明的总体流程进行更进一步的说明。
前面已经说明,在一个计算机机群中,一般包含一个管理主机和多个被管理主机,该管理主机对多个被管理主机的日志文件进行管理。在每一个被管理主机中都可能保存了多个日志文件,这些日志文件可能对应于计算机操作系统,可能对应于应用程序,也可能对应于计算机其他层次的系统。而且,这些计算机日志一般具有不同的格式。因此在本发明中,首先在步骤101保存这些具有不同格式的不同类型的计算机日志文件。
当系统管理员需要查看某一个具体的计算机日志文件中包含的信息时,可以通过管理主机的操作界面发送相应的指令,管理主机将该指令发送到被管理主机,被管理主机接收到上述指令后即开始对于指令所要求的具体计算机日志文件执行步骤102。或者,可以预先在被管理主机或管理主机上设定一个定时器,当到达该定时器设定的时间后,被管理主机对于所有的计算机日志或预先设定的计算机日志文件执行步骤102。这两种触发方式和现有技术相同,这里不再详细说明。
在步骤102中,为了对不同格式的日志文件进行统一、集中的管理,首先定义了一种统一的日志格式。具体地说,任何一个日志文件都可以看成是一个记录集,该记录集中的每一条日志记录都代表了一条日志信息,这个日志信息可以是一串单行字符流,也可以是一串多行字符流。在本发明的一个较佳实施例中,根据对各种日志记录的分析,可以将每一条日志记录分解为如下五个字段日志目标、产生时间、日志级别、日志内容和其它信息。
日志目标也可以称作日志类型,它代表日志文件的被描述对象,也就是处于某种运行状态的对象,例如是计算机操作系统本身,或者是操作系统的一个组成部分。每个日志文件可能包含多个日志目标,例如Windows的系统日志,它可能有一条日志描述了某个硬件损坏,还有一条日志描述某个系统服务被停止,这里的硬件与系统服务都是一个日志目标。当然,一个日志文件也可能只包含一个日志目标。在包含多个日志目标的情况下,这些日志目标组成了一个如图3所示的树状结构。如图3所示,Windows操作系统日志包含三个日志目标系统日志、应用日志和安全日志,它们组成了一个包含三个叶子节点的日志目标树。日志目标的描述以及它们之间的相互关系需要在系统运行之前预先定义,并保存在一个单独设置的配置文件中。
这里之所以要建立日志目标,是希望通过区分不同的日志目标来对日志内容进行分类,以方便日后的查询。因此,用户可以在原始日志文件格式的基础上,结合自己的管理需求灵活地定义日志目标。上述在原始日志文件格式的基础上是指系统能够通过日志记录中的标志性信息的分析确定该记录所描述的对象,有了这个基础,用户就可以根据自己的需求随时在广度和深度上扩展现有配置,定义更为详细准确的日志目标。
例如,通过对图3所示的Windows应用日志记录的分析可以进一步确定应用1的日志和应用2的日志,则可以将图3所示的日志目标树扩展为图4所示的日志目标树,也就是在应用日志的叶子节点下再建立两个下一级节点应用1日志和应用2日志。
为了在系统检索时对时间进行比较,定义了日志的产生时间。日志的产生时间是一个具有统一格式的表明日志产生时间的数值字符串,其格式例如可以是<年><月><日><时><分><秒>。其中用4个字符表示年份,例如“2003”表示2003年;用2个字符表示月份,例如“12”表示12月;用2个字符表示具体是哪一天,例如“31”表示31日;用2个字符表示小时,例如“12”表示12点;用2个字符表示分钟,例如“00”表示零分;用2个字符表示秒钟,例如“38”表示38秒钟。这样整个数值字符串“20031231120038”表示这个日志的产生时间是2003年12月31日12时0分38秒。
每种日志文件可能具有不同的时间精度,在本发明中,为了统一,系统需要对不同的时间精度统一成上述精度。例如,可以在原始日志格式转换为统一日志格式时对于精度不能达到的时间位补零,而对于原始精度超过上述精度的则直接去掉更高精度的数值。例如,某一条日志记录的原始记录产生时间是2003年12月31日12时,则将其分钟和秒钟位补零,修改后的产生时间则变成2003年12月31日12时0分0秒。而如果某一条日志记录的原始记录产生时间是2003年12月31日12时0分38秒30毫秒,则直接去掉毫秒信息,修改后的产生时间则变成2003年12月31日12时0分38秒。
日志级别表明日志记录的重要程度,可以用一个二元组(level_id,level_desc)来定义日志级别。其中,level_id是一个表明重要程度的非负整数,数值越小表明日志的重要程度越高。Level_desc是对一个级别的文字描述。在本发明中,可以为每种日志文件定义不同的日志级别。
日志内容是对日志对象的详细描述信息。其它信息则包含了一个日志文件中不属于上述四项的其它内容。
在如上定义了统一的日志格式之后,就可以将日志文件的具体日志记录转换为具有统一格式的日志记录。具体地说,包括图5所示的如下步骤。
在步骤501中,预先建立当前日志记录缓冲区,并预先为每一种日志文件建立一种解析方法。这里的当前日志记录缓冲区用于保存后面经过解析的已经具有统一日志格式的日志信息,这一点在后面将有更进一步的说明。另外,由于前面已经提到,每一种日志文件都具有不同格式,要对不同格式的日志文件解析成统一格式的日志文件,就需要对每一种不同格式的日志文件分别建立对应的解析方法。在实际操作中,可以利用动态加载函数的方式建立解析方法,也就是将每一种方法形成为一个动态加载函数(parse函数),并保存在系统中。对于不同的操作系统平台,使用不同的动态函数加载技术,例如对于Windows平台,使用动态连接库技术(.dll),而对于Linux平台,则使用动态库技术(.so)。
解析方法动态加载的过程如图6所示。每种日志文件都有自己专用的包含了一个解析函数的动态库,并且用日志文件名作为动态库的库文件名,从而可以实现“按名加载”。解析函数的动态加载过程是在对象的构造函数的过程中完成的。
在步骤502中,当需要进行格式统一时,首先打开一个具体日志文件。在本发明中,可以预先定义一个日志数据源对象,此时可以将日志文件的打开和关闭与日志数据源对象的创建和删除保持同步,也就是说,在创建对象时打开文件,在删除对象时关闭文件。这些文件管理操作对于用户来说是透明的。日志文件名可以作为对象构造函数的输入参数用于打开文件,得到的文件描述符可以保存在成员变量中用于后续对文件的操作。这里的数据源是对底层数据封装后形成的数据访问接口。
在步骤503中,对日志文件通过调用动态加载函数进行解析,然后将解析后的日志信息保存到当前日志记录缓冲区中。
其中对于步骤503,由于日志管理操作只需要对日志进行从头到尾的顺序访问,因此日志数据源仅提供了顺序读取日志记录的成员方法,也就是next方法。每调用一次next方法,日志数据源对象的当前日志记录缓冲区得到刷新。next方法是对parse函数的封装,这样可以隐藏操作的细节。由于next方法一次只能刷新缓存一条记录,因此parse函数也只需要每次从日志文件中读取一条日志记录所对应的数据区即可。也就是说,每次从保存在磁盘上的日志文件中读取一条日志记录,然后进行解析的过程,然后将这一次解析后形成的日志信息保存在当前日志缓冲记录区中。这个过程需要频繁地访问磁盘文件,降低了操作效率,为此,本发明还提供了另外一个实施例,也就是使用“预读缓冲区”技术,下面将对此详细说明。
预读缓冲区是指开辟一个足够大的缓冲区,用于一次性地从日志文件中读取尽可能多的数据。每次next方法调用parse函数时,parse函数只需要从预读缓冲区读取数据并进行相应的解析即可,只有在缓冲区为空时parse函数才再次进行文件读操作,这样可以大大减少对磁盘文件的访问次数。这里,所有对缓冲区的操作都封装在parse函数中。
使用预读缓冲区技术包括四个基本步骤创建缓冲区、填充缓冲区、读取缓冲区和释放缓冲区。在一次操作过程中,当需要读取日志文件的数据时,首先创建一个缓冲区,然后从日志文件中按照缓冲区的大小向缓冲区里一次性填充多条数据,然后再一条一条地从缓冲区中读取数据,同时对每一条数据进行解析,在读取并解析了一次性填充的多条数据之后,再次进行填充和读取操作,直到读取并解析了所有数据为止,然后释放缓冲区。具体地说,整个过程如图7所示包含如下步骤。
步骤701,首先判断是否已经创建了预读缓冲区。如果是,执行步骤705,否则执行步骤702。这里首先判断是否创建了预读缓冲区是为了系统的可靠性考虑的。
步骤702,在确认没有创建预读缓冲区的情况下,进一步判断是否读到了文件尾,也就是说,判断这个日志文件是否是一个没有任何数据内容的空文件,如果读到了文件尾,也就是说如果是一个空文件,结束本流程;否则执行步骤703。
步骤703、704,创建一个空的预读缓冲区,并将用于表示数据位置的静态读指针指向空缓冲区尾部,然后执行步骤707。
步骤705,判断静态读指针是否指向缓冲区尾部。如果静态读指针指向缓冲区尾部,则表明该缓冲区为空,此时执行填充数据的步骤,也就是步骤706、707和708。否则表明缓冲区内有数据,直接执行读取数据的步骤,也就是步骤709及其后续步骤。
步骤706,进一步判断是否读到了文件尾。同步骤702一样,这一步骤也是为了判断这个日志文件内是否有数据记录。如果是一个空文件,结束本流程;否则执行步骤707。
步骤707、708,读取与缓冲区大小相应的数据,然后将静态读指针指向缓冲区头部。这里的缓冲区大小相应的数据也就是一个缓冲区能容纳的数据,例如所建立的缓冲区能容纳10条记录,那么这里就一次性读取10条日志数据记录,然后将读指针指向第一条记录。
步骤709、710,读取当前读指针指向的记录,然后按照前述解析方法对该记录进行解析,并将解析后的结果保存在当前记录日志缓冲区中。
步骤711,将读指针指向下一个需要读取的记录。
步骤712,判断当前的预读缓冲区内是否还有记录。如果是,重新执行步骤709;否则执行步骤713。
步骤713,进一步判断是否读到文件尾部。如果读到文件尾部,表明已经读取了所有数据,则执行释放预读缓冲区的步骤,也就是步骤714;否则表明日志文件内还有数据未被读取和解析,则再次执行填充缓冲区的步骤,也就是步骤707和后续步骤,此时在步骤707中,新读取的与缓冲区大小相应的数据直接替代原来缓冲区中的数据。
步骤714,释放预读缓冲区。至此本流程结束。
图8是根据本发明的访问有预读缓存的日志记录的方法示意图。通过图8可以对上述流程有一个更直观的说明。如图8所示,在创建了空缓冲区之后,通过N次调用next方法,从日志文件中一次性读取N条数据记录,然后通过一条一条记录的读取和解析,将这N条记录的解析结果保存在当前日志记录缓冲区中。然后,从第N+1次调用next方法开始循环上述步骤,直到读取和解析了所有数据记录为止。
经过前述解析过程后,在步骤103中对统一格式的日志数据进行筛选,过滤对用户来说没有用处的日志信息,挑选出用户关心的日志信息。这里的筛选操作是由日志筛选层来完成的。
前面已经提到,在本发明的一个优选实施例中,日志筛选层位于被管理主机,而日志表示层位于管理主机,日志筛选层和日志表示层之间通过TCP/IP等网络通信协议进行通信。在这种情况下,本发明的筛选日志数据的处理包括如图9所示的如下步骤。
步骤901,首先判断管理主机上是否已经定义检索规则。如果还没有定义检索规则,则执行步骤902,然后执行步骤903,否则直接执行步骤903。
这里的检索规则总是与具体的日志文件相关的,每一种日志文件都有自己的一套预定义规则,这是因为对于不同的日志文件用户所关心的信息是不一样的。这里可以设置正向检索规则和反向检索规则。正向检索规则就是将匹配该检索规则的日志记录放入结果缓冲区中,而反向检索规则就是忽略匹配该检索规则的日志记录。换句话说,采用正向检索规则就是从所有的日志记录中查找符合要求的记录,而采用反向检索规则就是从所有的日志记录中去除不满足要求的记录,从而剩下符合要求的记录。至于具体采用哪种检索规则是用户基于检索效率来考虑的,与本发明的发明目的并不太大关系,因此不再详述。
检索规则可以是目标规则、时间规则、级别规则或内容字符串匹配规则,也就是分别根据前面经过解析得到的日志记录的日志目标、产生时间、日志级别和日志内容来筛选日志记录。当然,也可以综合运用这些检索规则来进行检索。至于具体如何进行检索是本领域技术人员的公知常识,这里不再赘述。
步骤902,如果没有预先定义检索规则,则临时定义检索规则,然后再管理主机上保存该检索规则。
一般而言,检索规则是相对固定的,因此不需要每次都去制定,在第一次制定了检索规则后,可以将其保存在管理主机上,等到第二次执行检索日志记录的处理时,就可以直接使用已经保存的所有或部分检索规则。
步骤903,管理主机将检索规则下发到所有被管理主机。被管理主机保存接收自管理主机的检索规则。
如果某个检索规则可以重复使用,用户可以在管理主机上将其保存为一个固定的预定义检索规则,并为其分配一个唯一的标识性信息方便日后的引用。这样在步骤903中,只需要向被管理主机下发该检索规则的标识性信息即可,而不需要重新发送规则本身,因此提高了规则的下发效率。
日志管理命令及检索规则可以从管理主机并发地下发给所有被管理主机,这样可以使各个被管理主机并发地执行日志管理,从而提高了管理的效率。
步骤904~906,被管理主机接收检索命令,然后创建检索结果缓冲区,并创建日志数据源对象。
步骤907,顺序读取一条日志记录。
步骤908,判断读取日志记录是否成功。如果是,对读取到的日志记录在步骤909中进行检索规则的匹配,然后在步骤910中判断该日志记录是否满足检索规则,这里以正向检索规则为例,如果满足,执行步骤911,否则重新执行步骤907。如果在步骤908中判断出没有成功读取到日志记录,则表明日志记录已经读取完毕,执行步骤912。
步骤911,将满足正向检索规则的日志记录填充到缓冲区。然后重新执行步骤907,也就是读取下一条日志记录。
步骤912~914,如果所有的日志记录都已经读取并匹配完毕,释放日志数据源对象,将匹配结果返回给管理主机,然后释放检索结果缓冲区。
在图9所示的实施例中,在管理主机发送一个管理操作请求时,系统根据请求的文件名称创建相应的日志数据源对象,在本次管理操作完成后,释放该日志数据源对象。也就是说,这里的日志数据源对象采用的是临时对象。当然可以理解,日志数据源对象可以采用持久化对象,也就是系统在启动或接收到第一个操作请求时创建该对象,在完成该操作请求后并不立即释放对象,而是等到系统停止时才释放该对象。与持久化对象相比,本发明采用临时对象更有利些,这是因为三个方面的原因。其一,从数据的访问模式看,每一个日志管理操作都可以看成是一次对日志文件的完整遍历,这是一种无状态的操作,也就是下一次的管理操作和上一次的管理操作是无关的。其二,从访问频率来看,日志管理操作都是由用户从界面触发的,因此这种管理操作不会非常频繁。其三,从一致性维护来看,如果使用持久化对象,就必须增加相应的逻辑来维护内存对象与日志文件之间的一致性,而日志文件的内容又是不断变化的,因此势必会极大地增加系统维护的工作量。基于上述三方面的原因,本发明优选使用临时对象方式来创建和释放日志数据源对象。
在完成了上述步骤之后,在步骤104,将挑选出的日志信息显示给用户。这里的显示方式对于本领域技术人员来说是公知常识,这里不再赘述。
通过上述过程,可以看出本发明通过采用不同的解析方法对不同格式的日志文件进行解析,形成统一的日志格式的日志数据,然后对日志数据进行检索规则的匹配,得到用户所关心的信息,然后将其显示给用户。因此,本发明不但可以在同一个管理主机上对所有的日志文件进行统一的操作,大大提高了日志管理的方便性,同时,本发明通过统一日志格式,降低了管理操作的难度,提高了管理效率。
本发明可以应用于上述计算机机群管理系统,也可以应用于单独的计算机,通过本发明对该计算机上形成的不同格式的日志文件进行统一管理。因此可以理解,上述仅仅是本发明精神的展示,而不是限制。
权利要求
1.一种计算机日志的管理方法,至少包括如下步骤a.在计算机上保存所形成的计算机日志文件;b.将不同计算机日志文件所包含的不同格式的日志记录解析成具有统一格式的日志记录;c.对统一格式的日志记录进行管理。
2.根据权利要求1所述的计算机日志的管理方法,其特征是,步骤c中的管理包括在计算机上显示统一格式的日志记录的步骤。
3.根据权利要求2所述的计算机日志的管理方法,其特征是,在显示统一格式的日志记录之前进一步包括筛选统一格式的日志记录的步骤。
4.根据权利要求3所述的计算机日志的管理方法,其特征是,所述筛选步骤包括判断是否已经定义了检索规则,如果是,执行下一步;否则定义并保存检索规则,然后执行下一步;创建检索结果缓冲区,并创建包含统一格式的日志记录的日志数据源对象;从日志数据源对象中顺序读取一条日志记录,使用检索规则匹配读取的日志记录,将匹配后得到的日志记录填充到检索结果缓冲区,然后顺序读取下一条日志记录;在匹配了所有日志记录之后,释放日志数据源对象,在计算机上显示匹配后得到的日志记录,释放检索结果缓冲区。
5.根据权利要求4所述的计算机日志的管理方法,其特征是,所述检索规则是正向检索规则,所述匹配后得到的日志记录是满足所述正向检索规则的日志记录;或者,所述检索规则是反向检索规则,所述匹配后得到的日志记录是除了满足反向检索规则的日志记录之外的所有日志记录。
6.根据权利要求4所述的计算机日志的管理方法,其特征是,所述计算机日志管理方法应用于计算机机群,所述定义检索规则的步骤在管理主机上进行,所述保存计算机日志文件、解析日志记录、创建和释放检索结果缓冲区、创建和释放日志数据源对象以及读取并匹配日志记录的步骤在被管理主机上进行,在管理主机定义了检索规则之后本发明进一步包括将定义的检索规则或用于标识检索规则的标识信息下发给被管理主机的步骤,被管理主机在匹配了所有日志记录之后进一步包括将匹配后得到的日志记录发送给管理主机的步骤,所述显示匹配后得到的日志记录是在管理主机上进行的。
7.根据权利要求6所述的计算机日志的管理方法,其特征是,在管理主机保存了检索规则之后进一步包括为所保存的检索规则设置一个标识信息,并将所述检索规则和对应的标识信息发送给被管理主机由被管理主机进行保存,所述将定义的检索规则或用于标识检索规则的标识信息下发给被管理主机是下发标识信息。
8.根据权利要求4至7中任意一项所述的计算机日志的管理方法,其特征是,在定义检索规则的步骤中为不同种类的日志文件分别定义相应的检索规则。
9.根据权利要求1所述的计算机日志的管理方法,其特征是,步骤b所述的解析步骤包括b1.为不同格式的日志记录定义统一的日志格式;b2.建立用于保存解析后具有统一格式的日志记录的当前日志记录缓冲区,并为每一种日志文件分别设置相应的解析方法;b3.打开日志文件,读取日志文件中的日志记录并使用步骤b2中的解析方法分别对每一条日志记录解析成具有步骤b1所述的统一的日志格式的日志记录;b4.将解析后具有统一格式的日志记录保存在所述当前日志记录缓冲区中。
10.根据权利要求9所述的计算机日志的管理方法,其特征是,步骤b3中读取日志记录是每次从保存在计算机磁盘上的日志文件中读取一条日志记录。
11.根据权利要求9所述的计算机日志的管理方法,其特征是,步骤b3中读取日志记录和解析过程包括如下步骤b31.创建一个空的预读缓冲区;b32.从保存在计算机磁盘上的日志文件中一次读取和预读缓冲区缓冲能力相应的大于等于1条的日志记录并填充到预读缓冲区;b33.从预读缓冲区中读取一条日志记录并进行解析,将解析后的结果保存到当前日志记录缓冲区中,然后从预读缓冲区中读取下一条日志记录;b34.在已经读取并解析了当前预读缓冲区中的所有日志记录之后,重复执行步骤b32,并使用新读取的日志记录替代预读缓冲区中原有的日志记录,然后重复执行步骤b33,直到已经读取并解析了该日志文件中的所有日志记录;b35.释放预读缓冲区。
12.根据权利要求11所述的计算机日志的管理方法,其特征是,在步骤b31之前进一步包括判断是否已经创建一个空的预读缓冲区的步骤,如果是,直接执行步骤b32,否则顺序执行步骤b31和b32。
13.根据权利要求11所述的计算机日志的管理方法,其特征是,在步骤b32之前进一步包括判断所述日志文件中是否包含日志记录的步骤,如果是,执行步骤b32,否则结束本流程。
14.根据权利要求9所述的计算机日志的管理方法,其特征是,在步骤b2中通过动态加载函数的形式设置解析方法。
15.根据权利要求9所述的计算机日志的管理方法,其特征是,步骤b1所述统一的日志格式包括用于标识日志文件的描述对象的日志目标、用于标识日志记录生成时间的产生时间、用于标识日志记录重要程度的日志级别、用于标识日志对象的详细描述信息的日志内容以及用于标识不属于上述四项的其他内容的其它信息。
16.根据权利要求15所述的计算机日志的管理方法,其特征是,所述日志目标的描述以及日志目标之间的相互关系在系统运行之前预先定义,并保存在一个单独的配置文件中。
17.根据权利要求16所述的计算机日志的管理方法,其特征是,所述日志目标之间的相互关系通过可扩展的日志目标树的形式定义。
18.根据权利要求15所述的计算机日志的管理方法,其特征是,所述日志级别通过表示日志记录重要程度的非负整数和对该重要程度的文字表述组成的一个二元组来定义。
全文摘要
本发明公开了一种计算机日志的管理方法,至少包括如下步骤在计算机上保存所形成的计算机日志文件;将不同计算机日志文件所包含的不同格式的日志记录解析成具有统一格式的日志记录;然后对统一格式的日志记录进行管理。其中可以进一步包括对具有统一格式的日志记录进行筛选和显示的步骤。本发明通过对日志文件所包含的具有不同格式的日志记录采取不同的解析方法解析成具有统一格式的日志记录,从而可以在一个管理主机上对所有被管理主机上的所有日志文件进行集中统一的管理。因此本发明极大地提高了日志管理的方便性,降低了管理操作的难度,并提高了管理效率。
文档编号G06F11/14GK1670708SQ20041002942
公开日2005年9月21日 申请日期2004年3月17日 优先权日2004年3月17日
发明者许正华, 黄平, 姜晓东 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1