一种日志信息的自动循环存储方法和系统的制作方法

文档序号:6364652阅读:412来源:国知局
专利名称:一种日志信息的自动循环存储方法和系统的制作方法
技术领域
本发明涉及计算机系统中的日志信息的自动循环存储,尤其是在通信系统设备中对系统的各类日志信息的实时、自动循环、按重要性级别存储方法与系统。几乎所有的计算机系统都需要定期或实时保存日志信息,这是系统进行诊断的重要手段。目前的储存日志信息的方法非常多,一般可以分为两类第一类系统是采用简单文件存储;第二类系统是数据库存储。
第一类系统的主要实现方法有1)单个文件存储所有的信息;2)按日期存储在多个文件中,可以按天存储还可以按星期存储在不同的文件中;3)按不同的应用目的把信息存储在多个文件中;4)按固定大小存储在多个文件中。
上述几种方法虽然实现起来非常简单,但其有以下的缺点存在超越磁盘存储空间的可能性,容易导致系统的崩溃;以上4种实现方法都不能自动维护,需要人工定期更新与维护;而第一、第二种和第三种方法还可能会使得文件太大,导致用户无法正常读取。
第二类系统的主要实现方法是在数据库中按系统设定的方式把日志信息存储的一张表中。
这种方法的优点是可以方便地查询日志信息。
其缺点是1)也有超越磁盘存储空间的可能性,还需要人工更新与维护;2)需要安装数据库软件,增加了系统的价格,降低了系统的性能,在使用上有一定的局限性。
在通信系统中各种调试和运行都需要保存一些重要的日志信息,而且希望尽可能减少人工参与维护。使用专门的数据库软件增加了成本,系统也显得臃肿。这就提出了一个问题是否能有一种相对独立简单的并能在较宽的使用范围里实现日志消息的自动、循环存储方法与系统?本发明的目的之一在于提供一种日志信息的自动循环存储方法,能自动覆盖最早的日志文件,有效控制磁盘存储空间,避免前述各类方法的缺陷,且不增加系统的运算量,不需人工维护;本发明的目的之二在于提供一种日志信息的自动存储系统,实现把按用户需求的各类系统的日志信息进行自动、循环、实时存储,而且保证了线程的安全,可以广泛运用在各类计算机系统中。
本发明的日志信息自动循环存储的方法,实现步骤如下一、系统初始化1)设置系统所需的各项参数,包括每个日志文件的最大值、日志文件总的最大值、打印的信息的内容以及需保存日志信息的级别;设置打印的信息的内容,包括是否打印源文件名、是否打印源文件的行号以及是否打印当前线程编号。
保存日志信息的级别表示保存级别小于等于设定值的系统信息,每条系统信息都有一个级别定义,级别越小的重要性越高。
2)根据指针文件得到上次系统退出时的文件编号,并打开一个日志文件;系统的指针文件,当退出系统时指针文件中保存退出时的日志文件编号;当系统运行时,将当前的日志文件编号保存在指针文件中。
3)检查打开的日志文件的大小是否超出设定的日志文件最大值;4)若超出,则关闭当前日志文件,并利用循环文件名生成算法找到下一个日志文件名,以清空的方式打开下一个文件;5)保存当前日志文件编号到指针文件中;6)启动定时器,并开始保存日志信息;二、定时循环监控日志文件的大小;1)检查当前文件的大小,判断是否小于初始化时设定的单日志文件的最大设定值,如果大于等于最大设定值,则跳转步骤6)动作;
2)如果小于最大设定值,则关闭当前日志文件;3)利用循环文件名生成算法产生1个新的文件名;4)打开步骤3)中的新文件,并清空原有内容;5)在指针文件中保存新的文件指针;6)等待一个设定的间隔时间结束,循环进入定时监控流程;三、在进入定时循环监控的同时实时记录保存日志信息;1)判断当前系统日志信息的级别是否小于等于初始化时设定的保存级别,如果信息的保存级别大于设定的系统保存级别,跳转步骤6)动作;2)为了保证线程安全,首先利用互斥技术加锁;3)然后取时间、线程号,根据当前的配置要求,保存日期、线程号、源程序的文件名、行号、日志内容等信息到当前日志文件中;4)换行,并刷新文件;5)释放步骤2)中所加的锁;6)等待接收系统下一条日志信息,继续实时判断保存日志信息。
本发明的日志信息自动循环存储系统包括初始化模块、定时器模块、写日志模块;初始化模块包括对需要保存的日志信息分级别、设置日志文件的相关参数、指针文件的指针值,系统启动的时候先进入初始化模块;当完成初始化所需的设置后同时开始进入写日志模块和定时器模块的动作;写日志模块中为保证线程的安全在写日志时设置加解锁,在写日志时实时取系统信息按初始化模块中设置的级别保存日志信息;定时器模块定时检查维护写入的日志文件,当写入的日志文件超过设定的大小时,循环清空、打开下一个日志文件。


图1是本发明的日志信息自动循环存储方法中初始化流程图;图2是本发明的日志信息自动循环存储方法中定时循环监控程图;图3为本发明的日志信息自动循环存储方法中写日志信息处理流程图;图4为本发明的日志信息自动循环存储系统的模块组成示意以下参考图1、图2、图3的流程,并结合实例说明本发明方法的处理过程,先说明在初始化和定时循环监控中有关循环文件名生成的方法(1)用户需要给定一个文件名,有两部分组成,如“ABCD.EFG”,其中的“ABCD”为基本文件名,“EFG”为扩展文件名,那么生成的新文件名为基本文件名+文件编号+“.”+扩展文件名;(2)文件编号是从1到编号最大值,编号最大值应当是“日志文件总的最大值”除以“单个日志文件的最大值”的结果的整数部分,编号的最大值必须大于等于2。
(3)当文件编号大于编号最大值时,文件编号重新回到1。
以下仅以本发明的方法和系统在认证计费服务器中的具体应用进行说明如下(1)初始化,调用本系统的初始化模块,主要参数是日志的级别、日志文件的基本名、指针文件的名称、单个文件的最大值、日志信息的总的存储空间。随后,系统自动启动定时器,不需要用户来执行这一步。
若单个文件的最大值为5M、日志信息的总的存储空间为403M,则文件编号最大值为80;(2)程序运行时系统将定时检查当前日志文件的大小,并判断是否需要转而写下一个文件。例如若当前文件指针为“3”,文件的基本名为“Radius.log”,则当前的日志文件名为“Radius3.log”,如果定时器检查到文件“Radius3.log”的大小超过单个文件的最大值,则使得文件指针为“4”,用清空方式打开文件“Radius4.log”,且在指针文件中记录“4”这个值;(3)程序运行时可以随时保存信息,只需要使用两个参数,例如PTRACE(3,″Message no″<<no);其中的第一个参数“3”表示这条信息的级别为3,若用户在初始化时设置的级别小于3,则不打印这条信息,否则打印这条信息。第二个参数中的″Message no″是一个字符串,而“no”是一个整数变量。若no的值为3,则结果为2000/11/12 102051 243 host.cpp(478) Message no3其中的“243”表示线程号为243的线程执行了这一行代码,“host.cpp(478)”表示打印这条信息的代码在host.cpp文件的第478行。
图4所示的本发明系统的模块组成示意图在上面已经作了详细的说明在此处就不再赘述;本发明的方法与系统采用了文件存储方式,利用循环的办法实现了日志信息的自动更新与维护。由于文件编号被保存在文件中,使得系统重新启动后还能记录当前文件的编号,而文件的编号是循环的,所以保证了系统覆盖的是最旧的文件。
利用本系统实现的日志系统还具有下列优点(1)循环使用存储空间,不需要人工干预,提高了系统的可靠性;(2)设置不同的日志级别,可以在调试时保存很多的跟踪信息,在运行时保存较少的跟踪信息,可自动保存源程序的文件名、行号等信息,增加了系统使用的方便性;(3)操作系统平台无关,支持多线程,使本发明的系统相对独立,便于管理;(4)调用接口十分简单、灵活。
权利要求
1.一种日志信息的自动循环存储方法,其特征在于,实现的具体步骤如下一、系统初始化1)设置系统所需的各项参数,包括每个日志文件的最大值、日志文件总的最大值、打印的信息的内容以及需保存日志信息的级别(11);2)根据指针文件得到上次系统退出时的文件编号,打开一个日志文件(12);3)检查打开的日志文件的大小是否超出设定的日志文件最大值(13);4)若超出,则关闭当前日志文件,并利用循环文件名生成算法找到下一个日志文件名,以清空的方式打开下一个文件(14);5)保存当前日志文件编号到指针文件中(15);6)启动定时器,并开始保存日志信息(16);二、定时循环监控日志文件的大小;1)检查当前文件的大小,判断是否小于初始化时设定的单日志文件的最大设定值(21),如果大于等于最大设定值,则跳转步骤6)动作(26);2)如果小于最大设定值,则关闭当前日志文件(22);3)利用循环文件名生成算法产生1个新的文件名(23);4)打开步骤3)中的新文件,并清空原有内容(24);5)在指针文件中保存新的文件指针(25);6)等待一个设定的间隔时间结束(26),循环进入定时监控流程(21);三、在进入定时循环监控的同时实时记录保存日志信息;1)判断当前系统日志信息的级别是否小于等于初始化时设定的保存级别(31),如果信息的保存级别大于设定的系统保存级别,跳转步骤6)动作(36);2)为了保证线程安全,首先利用互斥技术加锁(32);3)然后取时间、线程号,根据当前的配置要求,保存日期、线程号、源程序的文件名、行号、日志内容等信息到当前日志文件中(33);4)换行,并刷新文件(34);5)释放步骤2)中所加的锁(35);6)等待接收系统下一条日志信息(36),继续实时判断保存日志信息(31)。
2.根据权利要求1所述的一种日志信息的自动循环存储方法,其特征在于,在所述的初始化中设置打印的信息的内容,包括是否打印源文件名、是否打印源文件的行号以及是否打印当前线程编号。
3.根据权利要求1所述的一种日志信息的自动循环存储方法,其特征在于,在所述的初始化中保存日志信息的级别表示保存级别小于等于设定值的系统信息,每条系统信息都有一个级别定义,级别越小的重要性越高。
4.根据权利要求1所述的一种日志信息的自动循环存储方法,其特征在于,在所述的初始化中系统的指针文件,当退出系统时指针文件中保存退出时的日志文件编号;当系统运行时,将当前的日志文件编号保存在指针文件中。
5.一种日志信息的自动循环存储系统,包括本发明的日志信息自动循环存储系统包括初始化模块、定时器模块、写日志模块;初始化模块包括对需要保存的日志信息分级别、设置日志文件的相关参数、指针文件的指针值,系统启动的时候先进入初始化模块;当完成初始化所需的设置后同时开始进入写日志模块和定时器模块的动作;写日志模块中为保证线程的安全在写日志时设置加解锁,在写日志时实时取系统信息按初始化模块中设置的级别保存日志信息;定时器模块定时检查维护写入的日志文件,当写入的日志文件超过设定的大小时,循环清空、打开下一个日志文件。
全文摘要
本发明公开了一种以日志文件方式构成的日志信息自动循环存储方法与系统。通过在初始化模块中设置指针文件和日志文件的各类参数,由定时器模块定时对正在操作的日志文件进行扫描,并按顺序循环打开其它日志文件进行操作,而写日志信息时可按设定的级别和内容要求保存信息。本发明的方法系统在应用中相对独立,能够灵活地被调用。在各类计算机应用系统尤其是通信系统中的调试和运行都能达到良好的效果。
文档编号G06F11/30GK1361489SQ00137218
公开日2002年7月31日 申请日期2000年12月28日 优先权日2000年12月28日
发明者沈灿 申请人:深圳市中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1