日志系统和日志记录方法与流程

文档序号:11829871阅读:233来源:国知局
本发明涉及日志系统和日志记录方法。
背景技术
::服务器记录日志的通常方法通常是:实现一个日志记录函数,可以把日志内容记录到指定的硬盘文件中;如果要想把不同的日志记录到不同的硬盘文件中,则需要实现多个类似的日志记录函数;如果想把日志记录到数据库等存储媒介上,需要再实现新的日志记录函数。或者,只实现一个日志记录函数,而这个日志记录函数中增加一个参数,用于标记日志类别,然后日志记录函数根据这个参数,把日志记录到不同的硬盘文件中。其实,日志还会分缓存记录或立即记录,因为各有优缺点,所以通常会实现两套日志记录函数。技术实现要素:本发明在一个方面提供一种日志系统,包括:日志系统接口,日志记录模块,其中所述日志记录模块用于根据日志系统接口的通知记录日志,日志种类标识与日志记录模块的对应关系表,其中,所述日志系统接口根据日志种类标识与日志记录模块的对应关系表确定要通知的记录日志模块。本发明在另一个方面提供一种日志记录方法,包括:根据记录日志接口通知的日志种类标识,从日志种类标识与日志记录模块的对应关系表查找与该日志种类标识对应的日志记录模块ID,将与该日志种类标识对应的日志记录模块ID通知记录日志接口,由所述记录日志接口根据接收到的日志记录模块ID,通知与该日志记录模块ID对应的日志记录模块,由所述日志记录模块,记录日志。本发明在又一个方面提供一种日志系统变更方法,所述日志系统包括配置文件、日志记录模块生成器、日志记录模块和日志种类标识与日志记录模块的对应关系表,所述配置文件包括第一部分和第二部分,所述第一部分包括关于日志记录模块ID、日志记录模块的种类、及配置的信息,所述第二部分包括关于日志种类标识和日志记录模块ID的信息,所述方法包括:日志记录模块生成器检查所述配置文件是否发生了改变,如果所述配置文件发生了改变,日志记录模块生成器判断是配置文件的第一部分还是第二部分发生了改变,如果日志记录模块生成器确定第一部分发生了改变,日志记录模块生成器根据第一部分的变化修改日志记录模块,如果日志记录模块生成器确定第二部分发生了改变,日志记录模块生成器根据第二部分的变化修改日志种类标识与日志记录模块的对应关系表。本发明在另一个方面提供一种日志系统的初始化方法,所述日志系统包括配置文件、日志记录模块生成器,所述配置文件包括第一部分和第二部分,所述第一部分包括关于日志记录模块ID、日志记录模块的种类、及配置的信息,所述第二部分包括关于日志种类标识和日志记录模块ID的信息,所述方法包括:日志记录模块生成器读取配置文件,日志记录模块生成器根据配置文件第一部分生成日志记录模块,日志记录模块生成器根据配置文件第二部生成日志种类标识与日志记录模块的对应关系表,其中如果日志记录模块生成器根据配置文件确定存在一个日志种类标识对应于多个日志记录模块ID的情形,则日志记录模块生成器确定生成复合日志记录模块。根据常规的技术,如果想修改日志存储的硬盘文件名称的话,必须修改服务器的源代码,还需要重新编译等,比较麻烦。同时,如果想把某种日志由记录硬盘文件,改为记录到数据库里的话,还需 要修改大量的日志记录部分,因为他们使用的是不同的日志记录函数。本发明则是引入了日志记录模块,类似于现有技术中的日志记录函数;同时,本发明引入了日志记录模块生成器,结合配置文件和配置文件的动态加载,可以灵活的配置,不需要修改源代码,也不需要重启服务器,就可以实现对日志记录方式的修改。另外,根据常规的技术,如果发生异常,服务器(尤其是游戏服务器)短时间会记录海量日志时,导致硬盘满无法记录包括重要日志在内的所有日志,导致重要日志丢失;并且引起服务器性能大幅下降。服务器性能下降通常会造成不好的用户体验。例如,游戏服务器性能下降时会严重影响游戏参与者的游戏体验。本发明只需要修改配置文件,把发生异常的日志改为由空日志记录模块记录,也就是不记录发生异常的日志,则不会导致重要日志丢失,也不会影响游戏体验。此外,根据常规的技术,如果想把同一条日志内容,同时记录到两个或多个存储媒介上,则需要在记录日志部分,修改源代码,比较繁琐。而本发明,可以只需要修改一下配置文件,就能把一条日志同时记录在多个存储媒介上。因此,本发明的技术可以具有以下优点:(1)可以灵活配置按需对不同种类的日志内容,保存到不同的存储媒介上;(2)可以同时把同一种日志内容,保存到多种存储媒介上;(3)可以紧急停止记录某一种或多种日志内容;(4)在实现灵活配置,按需保存日志内容的同时,不用修改任何记录日志内容的代码。附图说明从下面结合附图对本发明的具体实施方式的描述中可以更好地理解本发明,其中:图1示出根据本发明示例实施例的日志系统的框图;图2示出根据本发明示例实施例的日志系统的初始化流程图;图3示出根据本发明示例实施例由日志记录模块生成器执行的变更操作流程图;图4示出根据本发明示例实施例进行日志记录操作的流程图;图5示出了根据本发明的示例实施例的计算装置的框图。具体实施方式下面将详细描述本发明各个方面的特征和示例性实施例。下面的描述涵盖了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说显而易见的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更清楚的理解。本发明绝不限于下面所提出的任何具体配置,而是在不脱离本发明的精神的前提下覆盖了相关元素或部件的任何修改、替换和改进。服务器通常都要记录日志,例如游戏服务器记录的日志包括重要日志如虚拟货币日志和虚拟道具日志,也包括不太重要的游戏参与者普通行为日志,比如游戏参与者使用的技能日志等。因为日志类型众多,并且有大量日志是和游戏参与者的游戏行为相关的,所以不能保证日志记录时不发生异常,而本发明可以灵活处理这样的异常。另外,有些服务器可能已经运营了很多年,随着技术的进步和需要的改变,日志的存储媒介也可能会改变,而本发明只需要提供相应存储媒介的日志记录模块及修改配置就能轻松解决问题,实现服务器日志的灵活记录。根据本发明所提出的技术方案可以用于游戏服务器正常的日志记录。可以按需配置日志记录方式,比如在启动服务器时,读取配置文件,对不同的日志种类,生成不同的日志记录模块。可以紧急修改日志记录方式,比如服务器受到攻击(会产生大量意义较小的日志内容),可在服务器出现故障(例如硬盘故障)时,把日志记录到其它存储媒介上,或者修改现有的日志记录模块,保证高优先级日志内容能记录下来。本发明所提出的技术方案不限定在游戏服务器上,也可以应该在其它任何需要记录日志的装置或程序上。本发明的技术方案可以用于程序调试,假如程序出现较难捕 获的错误,则可以在程序中的各个怀疑点上加上大量的调试日志,然后运行程序,直到再次出现错误,然后分析日志就可以解决问题。因为可以按需配置,在不需要这些调试日志的时候,只要修改一下配置文件,就可以不再记录这些调试日志内容,而不用删除先前增加的大量调试日志。下面结合附图详细描述本发明的实施例。图1示出根据本发明示例实施例的日志系统。如图1所示,根据本发明示例实施例的日志系统包括:配置文件180、日志记录模块160、日志记录模块生成器140和日志系统接口120。要说明的是,虽然图1的实施例中,配置文件180示出为日志系统的一部分,本领域的技术人员可以理解,配置文件可以在日志系统外部,只要日志记录模块生成器140能够读取配置文件180即可。日志系统接口120用于向服务器的日志记录部分提供统一的接口,避免日志记录部分经常改动。根据本发明示例实施例,作为统一接口的日志系统接口例如可以包括用于记录日志的接口、变更接口和初始化接口等。当服务器要记录日志时,日志系统接口120会向日志记录模块生成器140请求日志记录模块,并根据日志记录模块生成器的返回,通知相应的日志记录模块记录日志。服务器会定时调用日志系统的变更接口,以定时检测配置文件是否有变化。如果有变化,日志记录模块生成器会读取变化了的配置文件,修改日志种类标识与日志记录模块的对应关系表和/或日志记录模块。初始化接口在服务器启动时调用来初始化日志系统。日志记录模块生成器140包含配置文件分析单元,配置文件分析单元读取并解析配置文件180。根据解析结果,日志记录模块生成器140生成日志记录模块160和日志种类标识与日志记录模块的对应关系表。日志记录模块生成器140不止生成日志记录模块和日志种类标识与日志记录模块的对应关系表,还负责对它们进行维护。当日志记录模块生成器140接收到日志系统接口120对日志记录模块的请求后会查找日志种类标识与日志记录模块的对应关系表,并根据日志种类标识,返回对应的日志记录模块给日志系统接口120。根据本发明示例实施例,配置文件180例如可以包括下述两部分的内容:1)日志记录模块ID(即日志记录模块名称)、日志记录模块的种类、及配置;和2)日志种类标识和日志记录模块ID(一个日志种类标识可以对应于多个日志记录模块ID)。为了便于说明,表1给出配置文件的第一部分内容的示例:日志记录模块ID种类配置硬盘重要日志硬盘文件日志记录模块money.log数据库重要日志数据库日志记录模块dbtable_money普通日志硬盘文件日志记录模块normal.log表1表1第一列是“日志记录模块ID”(即名称)字段。表1的示例中日志记录模块ID包括“硬盘重要日志”、“数据库重要日志”和“普通日志”。本领域的技术人员可以理解,日志记录模块ID例如也可以由数字和/或字母代码表示。表1第二列是与第一列对应的“种类”(type)字段,例如,“硬盘文件日志记录模块”和“数据库日志记录模块”。表1中的第三列是“配置”(Config)字段,用于配置日志记录模块进行存储的存储路径。例如,“硬盘文件日志记录模块”需要硬盘文件名称,这个例子中是“money.log”和“normal.log”。例如数据库日志记录模块也需要数据表名称,这个例子中就是“dbtable_money”。表2给出配置文件的第二部分内容的示例:日志种类标识日志记录模块ID日志记录模块ID虚拟货币日志硬盘重要日志数据库重要日志玩家行为日志普通日志表2表2第一列是“日志种类标识”字段,表2的示例中包括两种日志种类“虚拟货币日志”和“玩家行为日志”。本领域的技术人员可以理解,日志种类标识例如也可以由数字和/或字母代码表示。表2的其它的列是与“日志种类标识”对应的“日志记录模块ID”字段。虽然表2中仅给出了两列日志记录模块ID,本领域的技术人员可以理解可以包括更多列的日志记录模块ID,也就是说本发明中的每个日志种类标识可以对应于一个或多个日志记录模块ID。在表2的例子中,“虚拟货币日志”对应于“硬盘重要日志”和“数据库重要日志”两个日志记录模块ID;玩家行为日志对应于“普通日志”一个日志记录模块ID。日志记录模块生成器140主要根据第一部分生成日志记录模块,日志记录模块生成器140主要根据第二部分生成日志种类标识与日志记录模块的对应关系表。根据本发明的一个示例,生成的日志种类标识与日志记录模块的对应关系表位于日志记录模块生成器140中。日志记录模块160,类似于现有技术中的日志记录函数。日志记录模块的种类,例如可以包括:1)硬盘文件日志记录模块,用于向指定的硬盘文件中记录日志内容;2)网络日志记录模块,用于向日志存储服务器发送日志内容;3)数据库日志记录模块,用于向数据库中记录日志内容;4)空的日志记录模块,用于丢弃日志内容;和/或5)复合日志记录模块,用于对同一条日志内容采用多种记录方案,比如向硬盘文件记录日志内容的同时,也向日志存储服务器发送日志内容,或者用于同时向多个硬盘文件中记录同一条日志内容。本领域的技术人员可以理解,根据具体需求,还可以包括其它种类日志记录模块。根据本发明的示例实施例,这些日志记录模块种类继承于同一基类。在记录日志时,服务器会传入日志种类标识,就可以根据日志种类标识,找到相应的日志记录模块,然后使用这个日志记录模块记录日志。也就是,假如记录虚拟货币日志,会传人日志种类标识“虚拟货币日志”,然后发现这个日志种类标识,对应了两个日志记录模块“硬盘重要日志”和“数据库重要日志”。然后这两个日志记录模块分别记录日志到 money.log和dbtable_money中。图2是根据本发明示例实施例的日志系统的初始化流程图。在启动服务器(例如游戏服务器)时,就要初始化日志系统。初始化包括根据配置文件生成日志记录模块及生成日志种类标识与日志记录模块的对应关系表。如图2所示,首先在步骤203日志记录模块生成器会读取配置文件。在步骤205日志记录模块生成器会根据配置文件生成日志记录模块,然后在步骤207日志记录模块生成器会根据配置文件生成日志种类标识与日志记录模块的对应关系表。需要说明的是,本发明并不限制步骤205和207的顺序,也就是说,步骤205可以在步骤207之前进行,或者步骤207可以在步骤205之前进行,或者二者可以并行进行。如果生成日志种类标识与日志记录模块的对应关系表时,发现一个日志种类标识对应于多个日志记录模块ID,则日志记录模块生成器确定需要生成复合日志记录模块。例如,在表2的示例中,“虚拟货币日志”要记录到两个地方,则需要配置两个日志记录模块ID(分别是“硬盘重要日志”和“数据库重要日志”),这两个日志记录模块ID分别对应一个记录到“money.log”中的“硬盘文件日志记录模块”和一个记录到“dbtable_money”中的“数据库日志记录模块”。由于这个例子中,“虚拟货币日志”涉及两个日志记录模块,则需要一个新的日志记录模块(即“复合日志记录模块”),把这两个日志记录模块包括进来。根据本发明的示例实施例,日志记录模块生成器在生成日志记录模块时,还会生成一个空的日志记录模块,用于会丢弃日志内容。另外,根据本发明的示例实施例,服务器(例如游戏服务器)每间隔一定时间,调用一次日志系统的变更接口,日志系统的变更接口会通知日志记录模块生成器执行变更流程。图3示出根据本发明示例实施例由日志记录模块生成器执行的变更操作流程图。如图3所示,变更流程在步骤301开始。在步骤302日志记录模块生成器检查配置文件180(见图1)是否有变化,如果配置文件没有变化,变更流程结束,以避免消耗服务器性能。如果在步骤302,日志记录模块生成器确定配置文件有了变化,则变更流程前进到步骤303。在步骤303,日志记录模块生成器判断是否是日志配置文件的第一部分中的日志记录模块ID、日志记录模块的种类和/或配置有了变化。如果日志记录模块生成器确定第一部分中的日志记录模块ID、日志记录模块的种类和/或配置有变化,变更流程前进到步骤304,日志记录模块生成器根据改变了的配置文件维护(例如修改)日志记录模块。如果日志记录模块生成器确定第一部分中的日志记录模块ID、日志记录模块的种类和配置没有变化,变更流程前进到步骤305。在步骤305日志记录模块生成器判断是否是日志配置文件的第二部分中的日志种类标识和/或日志记录模块ID有了变化。如果日志记录模块生成器确定第二部分中的日志种类标识和/或日志记录模块ID有变化,变更流程前进到步骤306。在步骤306,日志记录模块生成器根据改变了的配置文件维护(例如修改)日志种类标识与日志记录模块的对应关系表。变更流程在步骤307结束。根据本发明,当有异常发生,需要变更日志记录方式时,可以修改配置文件,例如,可以由操作人员直接修改配置文件。这样到下次服务器调用日志系统的变更接口时,变更接口会通知日志记录模块生成器执行如图3所示的变更流程,从而能够根据最新的配置文件变更日志的记录方式。例如,如果需要把某日志同时还记录在不同的存储媒介或同一存储媒介的不同文件中(例如不同的硬盘文件中)时,可以修改配置文件。首先根据需要在配置文件的第一部分增加日志记录模块ID、日志记录模块的种类、及配置的内容,然后修改配置文件的第二部,增加日志种类标识所对应的日志记录模块ID。此外,根据本发明的示例实施例,在记录日志时,服务器会调用日志系统接口中的记录日志接口,并向记录日志接口传送日志种类标识及日志内容。记录日志接口向日志记录模块生成器发送对日志记录模块的请求。日志记录模块生成器会执行例如如图4所示的日志记录流程,然后将相应的日志记录模块返回给记录日志接口。如图4所述,日志记录流程在步骤402开始。在步骤404,日志记录 模块生成器根据日志种类标识,查找日志种类标识与日志记录模块的对应关系表。如果在该表中没有找到相关内容(例如,表中不存在与日志种类标识对应的日志记录模块ID,或者不存在该日志种类标识)则转到步骤408,该流程结束。如果在步骤404找到与该日志种类标识对应的日志记录模块ID,则日志记录流程前进到步骤406,日志记录模块生成器将该日志种类标识对应的“日志记录模块ID”通知记录日志接口,记录日志接口根据接收到的“日志记录模块ID”,通知对应的日志记录模块,执行日志的写操作(例如通过调用写日志函数)。例如,硬盘文件日志记录模块会把日志内容记录到硬盘文件中,而空的日志记录模块会丢弃日志内容。根据本发明的一些示例实施例,在配置文件中(或者日志记录模块生成器中)对日志种类进行分级。例如,可以在配置文件的“配置”字段设置日志的等级。可以在异常发生时,自动采取相应的策略,例如,停止记录低优先级的日志种类,以确保高优先级的重要日志能完整记录。避免运营人员监控不及时造成不必要的损失。根据本发明的一些示例实施例,日志系统中,还可以包括异常监控模块。异常监控模块发现异常时,可以修改配置文件,把发生异常的日志改为由空日志记录模块记录,也就是不记录发生异常的日志。在一示例中,异常监控模块例如可以包括日志流量监控系统。如果日志流量监控系统发现某种日志种类,在短时间内有大量的日志内容记录,则可以认为这种日志种类发生异常。可以由日志系统向运营人员报警或根据此日志种类的优先级,自动停止记录这种日志种类的日志内容,同时继续监控日志流量。如果日志流量监控系统发现恢复正常,可以恢复记录这种日志种类的日志内容。根据本发明的另一些示例实施例,日志系统还可以包括存储介质监控模块。存储介质监控模块的一个示例是硬盘空间监控模块。当硬盘空间监控模块发现硬盘剩余空间较小,达到一定的阀值时,可以向运营人员报警。当进一步达到更小的阀值时,日志系统会停止记录低优先级的日志种类,以确保高优先级的重要日志能完整记录。根据本发明的另一些示例实施例,日志系统例如还可以包括网络异常 监控模块和/或数据库异常监控模块,当发现网络异常或数据库异常后,网络异常监控模块或数据库异常监控模块可以报警或通过修改配置文件来改变日志记录方式(例如,改为将日志内容记录到硬盘中)。总之,本发明把日志记录模块抽象出来,根据记录日志的存储媒介不同,可以实现不同的日志记录模块。本发明还可以实现组合形式的日志记录模块,组合形式的日志记录模块可以包含多个其它的日志记录模块,实现同一条日志内容同时向不同的存储媒介写入的效果。本发明还可以实现空的日志记录模块,如果使用空的日志记录模块,意味着当前日志内容会丢弃,当服务器受到某种攻击或发生某种异常时会记录大量无用的日志时,可以把相应日志紧急配置为空的日志记录模块,避免引起其它问题。本发明引入了日志记录模块生成器,它除了可以生成日志记录模块外,还可以维护日志记录模块,比如某一种日志内容原先是向硬盘文件写入,可以通过修改配置文件,从而修改为向网络或数据库写入日志内容,或者使用组合形式的日志记录模块,实现在向硬盘文件写入日志内容的同时,向网络或数据库写入日志内容。根据本发明,还可以对不同的日志种类,进行优先级分类,当发生某种紧急情况时,只记录高优先级的日志内容,而丢弃掉低优先级的日志内容,以确保高优先级的日志内容能记录下来。根据本发明,在日志记录模块生成器中,包括一个日志种类标识与日志记录模块的对应关系表格。这个对应关系表格在服务器启动时建立,在配置文件变化时进行维护,在记录日志内容时,用于根据日志种类标识迅速确认要使用的日志记录模块。根据本发明,使用统一的日志系统接口,在记录日志内容时,只需写入日志种类标识和日志内容,而不用关注这条日志内容未来会怎样记录。本领域的技术人员可以理解上述实施例的方法可以通过能够在计算装置上运行的计算机可读指令实现。图5示出被配置成实施这里提供的一个或多个实施例的计算装置1002的例子。计算装置1002的一个实例是服务器。计算装置1002可以包括处理单元1006和存储器1008。存储器1008例如可以是易失性的(例如RAM)、非易失性的(例如ROM、闪速存储器等等)、或二者的组合。 这种配置在图5上用虚线1004例示。装置1002还可包括附加的存储装置,包括但不限于,磁存储装置、光存储装置等等。这样的附加存储装置在图5上用存储装置1010例示。在一个实施例中,实施这里提供的一个或多个实施例的计算机可读指令可以是在存储装置1010中。存储装置1010还可存储操作系统、应用程序等等的其它计算机可读指令。计算机可读指令可被装载在存储器1008中,用于例如由处理单元1006执行。装置1002还可包括允许装置1002与其它装置通信的通信装置1016。通信装置1016可包括但不限于,调制解调器、网络接口卡(NIC)、集成网络接口、射频发射机/接收机、红外端口、USB连接、或用于将计算装置1002连接到其它计算装置的其它接口。通信装置1016可包括有线连接或无线连接。装置1002可包括输入装置1014,诸如键盘、鼠标、笔、话音输入装置、触摸输入装置、红外照相机、视频输入装置、和/或任何其它输入装置。诸如一个或多个显示器、扬声器、打印机、和/或任何其它输出装置那样的输出装置1012也可以被包括在装置1002中。输入装置1014和输出装置1012可以经由有线连接、无线连接或它们的任何组合被连接到装置1002。计算装置1002的部件可以通过各种互连,诸如总线,而被连接。这样的互连可包括诸如PCIExpress那样的外围设备互连(PCI)、通用串行总线(USB)、firewire(IEEE1394)、光总线结构等等。以上已经参考本发明的具体实施例来描述了本发明,但是本领域技术人员均了解,可以对这些具体实施例进行各种修改、组合和变更,而不会脱离由权利要求或其等同物限定的本发明的精神和范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1