日志多语言查询方法和系统与流程

文档序号:12836630阅读:407来源:国知局
日志多语言查询方法和系统与流程
本发明涉及日志处理技术领域,更为具体地,涉及一种日志多语言查询方法和系统。

背景技术:
日志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志:操作系统内核、各种应用服务器等等。日志的内容、规模和用途也各不相同,很难一概而论。总之,日志的功能是记录软件运行状态,存储系统产生的事件信息。随着软件国际化的发展,软件应用界面已经可以支持多语言切换,但在日志的存储与处理上普遍是三种方式:1)支持单一语种。无论界面语言如何切换,日志还保持着原有语言日志。支持单一语种的方式的弊端在于不同语种的使用者需要翻译日志成自我可以理解的意义,造成不便。2)存储多种语言信息的日志。当界面切换调用不同语言的日志文件。第二种方式的弊端在于软件数据库中需要更多的存储空间,同时对于新语言的扩展也带来不便。当软件运行一段时间后增加一种语言支持,将无法翻译之前的日志。3)日志的语言随着界面切换而改变存储。这种方法带来的弊端为,当多个语种使用者在不断的切换语言时,所看到的日志是有不同语言所组成。在理解日志上有很大的困难。若要解决以上问题,需要新的日志语言处理方法来实现日志多语言的切换进行查询。

技术实现要素:
鉴于上述问题,本发明的目的是提供一种日志多语言查询方法和系统,以在不浪费存储空间的情况下解决日志多语言快速切换的问题。本发明提供的日志多语言查询方法,包括:解析获得的日志,抽取其中的可变参数,并加入日志ID保存至日志数据库;根据查询条件,从日志数据库获取带有日志ID的一组日志;根据获取的带有日志ID的一组日志和选择的语言类型,从预置语言类型的日志模板文件中加载日志ID的日志格式信息;循环将所述加载的同一日志ID的日志格式信息与解析后的同一日志ID的日志进行合并,直至一组日志全部合并完成获得查询结果。此外,优选的方案是,在进行日志解析的过程中根据解析前的日志的vid、mid和eid生成日志ID。本发明提供的日志多语言查询方法,包括:日志收集单元用于解析获得的日志,抽取其中的可变参数,并加入日志ID作为解析后的日志保存至日志数据库;日志查询单元用于根据查询条件,从志数据库获取带有日志ID的一组日志;根据获取的带有所述日志ID的一组日志和选择的语言类型,从预置语言类型的日志模板文件中加载日志ID的日志格式信息;循环将加载的同一日志ID的日志格式信息与解析后的同一日志ID的日志进行合并,直至一组日志全部合并完成获得查询结果。此外,优选的方案是,日志收集单元包括日志解析单元;日志解析单元用于根据解析前的日志的vid、mid和eid生成日志ID。从上面的技术方案可知,本发明的日志多语言查询方法和系统,能够取得以下有益效果:1)能够解决软件即时日志语言转换,让不同的使用者在保证软件系统运行正常、不浪费存储空间的情况下快速的完成日志语言切换;2)通过简单升级就能够增加日志的语言种类,即:通过简单软件升级就支持新的语言版本,能够将历史日志转换成新增加的语言。为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。附图说明通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:图1为根据本发明实施例的日志多语言查询方法流程图;图2为根据本发明实施例的日志收集流程图;图3为根据本发明实施例的日志查询流程图;图4为根据本发明实施例的日志合并流程图;图5为根据本发明实施例的日志多语言查询系统框图。在所有附图中相同的标号指示相似或相应的特征或功能。具体实施方式在下面的描述中,出于说明的目的,为了提供对一个或多个实施例的全面理解,阐述了许多具体细节。然而,很明显,也可以在没有这些具体细节的情况下实现这些实施例。以下将结合附图对本发明的具体实施例进行详细描述。在计算机系统中任何程序都有可能输出日志,如操作系统内核、各种应用服务器等等。日志的内容、规模和用途也各不相同,日志的功能是记录软件运行状态,存储系统产生的事件信息;同时,软件应用界面已经可以支持多语言切换,因此,本发明提出了日志多语言查询。以下将结合附图对本发明的具体实施例进行详细描述。图1为根据本发明实施例的日志多语言查询方法流程图。如图1所示,本发明提供的日志多语言查询方法,包括日志收集和日志查询。S110:日志收集;解析获得的日志,抽取其中的可变参数,并加入日志ID保存至日志数据库。S120:日志查询:根据查询条件,从日志数据库获取带有日志ID的一组日志;根据获取的带有日志ID的一组日志和选择的语言类型,从预置语言类型的日志模板文件中加载日志ID的日志格式信息;循环将加载的同一日志ID的日志格式信息与解析后的同一日志ID的日志进行合并,直至一组日志全部合并完成获得查询结果。在步骤S110中,将获得的标准描述性日志进行解析;将日志中固定语言删除,只保留日志中的可变参数。将可变参数用“#”分割成一个字段(例:IP#IPv4#IPv6#60%),并加入日志ID(vid_mid_eid)保存至日志数据库。在上述描述中,将获取的一条日志解析,删除固定语言,保留其中的可变参数,并加入日志ID保存至日志数据库,此时这条日志的在日志数据库中的信息称为日志信息。在步骤S120中,从前台调用查询接口,其中包含语言日志模板文件,通过查询日志数据库获取带有日志ID(vid_mid_eid)的一组日志;根据获取带有日志ID的一组日志的日志类型和前台界面显示的语言类型,从日志模板文件中加中加载日志格式信息并保存到日志数据库中;在日志数据库中循环将加载的日志格式信息与解析后的每条日志进行日志合并,直至合并完成返回前台。从上述日志多语言查询方法过程中,由于所有日志的格式都是通过固定模版生成,在存储日志的时候只保存日志中的可变参数;当前台查询日志的时候,将调用不同语言的日志模版生成不同语言的日志。当增加语言时只需要添加一个语言日志模版。在步骤S110日志收集中增加语言日志模板文件的解析脚本,在步骤S120日志查询中增加相应的语言日志模板文件。在解析所获得的日志之前,将日志模版文件转换成Json格式,如:zh_CN.json(中文),根据日志模板文件的文件名区分语言类型。Json文件中存储的内容格式实例:{“0”:{“vid_mid_eid”:“成功申请NAT转换后资源:#1#(#3##2#),当前可用资源剩余:#4#。”,……},//system“1”:{“vid_mid_eid”:日志Message信息,……},//AV“2”:{“vid_mid_eid”:日志Message信息,……},//AS“3”:{“vid_mid_eid”:日志Message信息,……},//IPS“4”:{“vid_mid_eid”:日志Message信息,……},//URL“5”:{“vid_mid_eid”:日志Message信息,……},//APP}在日志模版文件中对每条日志都分配固定的日志ID(vid_mid_eid),通过日志ID来确定一条日志的日志格式信息。在日志收集110中,图2为根据本发明实施例的日志收集流程图,如图2所示,日志收集110流程如下:步骤111:日志收集的开始;步骤112:接收日志,从产生日志设备4000中获得标准描述性日志;步骤113:分析获得的日志是否已经得到解析;若获得的日志未解析,进行步骤114,如获得的日志已经得到解析,那么直接进行步骤115;步骤114:对获得未解析的日志进行日志解析,即:增加语言日志模板文件的解析脚本;步骤115:将解析的日志保存到日志数据库;步骤116:日志收集结束。上述为日志收集110的整个流程,日志收集结束后将进行日志查询,图3为根据本发明实施例的日志查询流程图;如图3所示,日志查询120过程如下:步骤121:日志查询开始;步骤122:从前台调用查询接口(APL),包含语言日志模板文件;步骤123:从日志数据库3000中进行查询日志数据库;通过查询日志数据库获取带有日志ID(vid_mid_eid)的一组日志;步骤124:根据获取的带有日志ID的一组日志的日志类型和前台界面显示的语言类型,从日志模版文件中加载日志格式信息,即加载语言日志模板文件,并保存至日志数据库中;步骤125:在日志数据库中将加载的日志格式信息与解析后的每条日志进行日志合并;步骤126:日志合并是否完成;如果日志合并未完成,将继续执行步骤125;如果日志合并已经完成,将执行步骤127;步骤127:日志合并完成后返回给前台转换结果,即转换日志模板文件;步骤128:日志查询结束。上述为日志查询120过程,在此过程中,通过日志合并实现软件升级,以支持新的语言日志版本,将历史日志转化成新增加的语言日志模板文件。上述的日志合并过程包括:日志信息进行原始日志匹配,根据查询日志的日志类型和当前界面显示的语言类型,预先一次性加载相关日志格式信息定义文件,并按字典格式存储Dict_Message(日志数据库),按如下步骤逐条匹配原始日志的信息。根据原始日志的vid、mid和eid生成Key:日志ID(vid_mid_eid),在Dict_Message中查询的对应的Key值(日志ID)。原来未加载日志格式信息的日志数据库中存储的日志信息参数跟原始日志信息参数不同,将加载日志格式信息的日志数据库中的日志信息参数按照未加载日志格式信息的日志数据库中存储的日志信息参数进行分割;并利用正则表达式将分割后的日志信息参数作为替换参数替换到原始日志信息参数中。其中,未加载日志格式信息的日志数据库中存储的日志信息参数是用“#”分隔,而原始日志格式信息的参数是“#[0-9]+#”表示,将结果中的日志信息的参数(加载日志格式信息的日志数据库中的日志信息参数)按“#”进行分割,并利用正则表达式将分割后的参数替换到原始日志中。在日志合并过程中,当原始日志中替换分割后的参数的位置与日志数据库中存储的参数的位置不一致时,需要对原始日志中的替换参数的数值进行排序后再替换。图4为根据本发明实施例的日志合并流程图,如图4所示,日志合并125步骤如下:步骤12501:日志合并开始;步骤12502:从DB(日志数据库)中获取日志信息参数params;步骤12503:从原始日志信息文件中获取到对应的信息内容message;步骤12504:日志信息参数params或者对应的信息内容message是否为空;如果为空,那么就执行步骤12509;如果不为空,那么就继续往下执行步骤12505;步骤12505:从message中查找所有的原始日志中待替换参数;步骤12506:将待替换参数按值排序形成列表L;步骤12507:将params按“#”进行分割形成列表P;步骤12508:遍历列表L的值value,将原始日志信息message中的“#value#”用日志数据库中P中的值分别进行替换;步骤12509:替换结束后返回message的值;步骤12510:日志合并完成。上述过程为日志合并的具体步骤,通过简单的升级以增加日志的语言种类,完成多语言切换和新语言的支持。与上述方法日志多语言查询方法相对应,本发明还提供一种还提供的日志多查询系统。图5为根据本发明实施例的日志多语言查询系统框图,如图5所示,日志多语言查询系统框图如下:日志产生单元510用于产生日志。日志收集单元520用于接收日志产生单元510产生的日志在日志解析单元521中进行解析,删除其中的固定语言,保留其中的可变参数,将可变参数用#号分割成一个字段(例:IP#IPv4#IPv6#60%),并加入日志ID(vid_mid_eid)保存至日志数据库单元522。日志查询单元530用于从前台调用查询接口(APL),其中包含语言日志模板文件,查询日志数据库单元522,在日志数据库单元522中查询获得带有日志ID的一组日志。加载日志格式信息单元531用于根据日志数据库单元522中的日志的类型和当前界面显示的语言类型,从日志模板文件中加载日志格式信息保存到日志数据库单元522中。合并单元532用于日志数据库单元522中循环将加载的日志格式信息与解析后的每条日志(日志产生单元510产生的日志)进行日志合并,直至合并完成返回前台。其中,日志查询单元530包括日志合并单元532;日志信息进行原始日志(日志产生单元510产生的日志)匹配,在加载日志格式信息单元531中,根据查询日志的类型和当前界面显示的语言类型,预先一次性加载相关日志格式信息定义文件,并按字典格式存储Dict_Message,按如下步骤逐条匹配原始日志的信息。日志合并单元532包括:根据原始日志的vid、mid和eid生成日志ID,在加载日志格式信息单元531形成的日志保存到日志数据库单元522中查询的对应的日志ID值;日志数据库单元522中存储的日志信息参数跟原始日志信息参数不同,即:日志数据库单元522中存储的日志信息参数是用“#”分隔,而原始日志中的参数是“#[0-9]+#”表示。将在加载日志格式信息单元531形成的日志保存到日志数据库单元522中的日志信息参数按照日志数据库单元522中存储的日志信息参数“#”进行分割,并利用正则表达式将分割后的信息参数作为替换参数替换到原始日志信息参数中。在日志查询单元530的加载日志格式信息单元531中增加语言日志模板文件,在日志收集单元520的日志解析单元521中增加相应语言日志文件的解析脚本。在日志查询单元530中增加语言日志模板,将日志模版文件转换为Json格式,如:zh_CN.json(中文),根据其文件名区分语言类型。Json文件中存储的内容格式实例:{“0”:{“vid_mid_eid”:“成功申请NAT转换后资源:#1#(#3##2#),当前可用资源剩余:#4#。”,……},//system“1”:{“vid_mid_eid”:日志Message信息,……},//AV“2”:{“vid_mid_eid”:日志Message信息,……},//AS“3”:{“vid_mid_eid”:日志Message信息,……},//IPS“4”:{“vid_mid_eid”:日志Message信息,……},//URL“5”:{“vid_mid_eid”:日志Message信息,……},//APP}在模版中对每条日志都分配固定的日志ID(vid_mid_eid)。通过日志ID来确定一条日志的日志格式信息。在日志合并单元532中,当原始日志中的替换参数位置与日志数据库中存储的参数位置不一致时,要对原始日志中的替换参数的数值进行排序后再替换。首先从DB(日志数据库单元522)中获取日志信息参数params;从原始日志信息文件中获取到对应的信息内容message。如果日志信息参数params或者对应的信息内容message为空,直接返回message的值;如果日志信息参数params或者对应的信息内容message不为空,那么就继续往下进行参数的替换。从message中查找所有的原始日志中待替换参数;将待替换参数按值排序形成列表L;将params按“#”进行分割形成列表P;遍历列表L的值value,将原始日志信息message中的“#value#”用日志数据库中P中的值分别进行替换;替换结束后返回message的值,整个日志合并单元工作完成。需要说明的是,在本发明的日志多语言查询方法与系统中,可以采用多种方式描述日志ID和日志信息参数,在本发明的上述实施例中,所采用的日志ID的表述和日志信息参数的表述只是一种具体实现的表述,上述表述方式为多种方式中的一种,并不作为对本发明中日志ID和日志信息参数描述方式的限定。通过上述本发明提供的日志多语言查询方法与系统,在CPUi33.30GHz、内存512M的机器配置下,10万条日志查询结果转换完毕大约耗时7秒,平均每秒转换大约14000条日志。在一般的查询日志的应用中,用户每次查看的数量会远远小于1万条,因此方法与系统性能能够满足需要。通过上述实施方式可以看出,本发明提供的日志多语言查询方法和系统,由于所有日志的日志格式信息都是通过固定模板生成,在存储日志的时候只保存日志中的可变参数,当前台查询日志的时候,将调用不同语言的日志模板生成不同语言的日志,当增加语言时只需要添加一个语言日志模板。本发明通过上述描述,能够解决软件即时日志语言转换,不同的使用者在保证软件系统运行正常、不浪费存储空间的情况下快速的完成日志语言切换,并且通过简单的软件升级支持新的语言版本。如上参照附图以示例的方式描述了根据本发明提出的日志多语言查询方法和系统。但是,本领域技术人员应当理解,对于上述本发明所提出的日志多语言查询方法和系统,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1