掌桥专利:专业的专利平台
掌桥专利
首页

日志分类方法及装置

文献发布时间:2023-06-19 12:18:04


日志分类方法及装置

技术领域

本申请实施例涉及计算机技术领域,尤其涉及一种日志分类方法及装置。

背景技术

日志用于记录软件的运行信息,能够为技术人员监控软件运行状态、查找错误原因以及优化软件性能等提供信息依据。

其中,软件可以包含大量实现不同功能的程序模块,这些程序模块的运行方式相互之间存在差异,且这些程序模块实现的业务也存在差异,使得软件在运行期间会产生海量且形式多样的日志。这样导致软件的日志不便于查看,从而使得日志的使用效率较低。

发明内容

本申请实施例提供了一种日志分类方法及装置,以解决软件的日志使用效率低的问题。

第一方面,本申请实施例提供了一种日志分类方法,该方法包括:

获取软件运行过程中产生的至少一条日志;

获取至少一条日志中每条日志的特征信息,每条日志的特征信息中包含相应日志的结构特征;

根据至少一条日志中每条日志的特征信息对至少一条日志进行聚类,得到至少一个日志集,任一日志集中各条日志的结构相似。

第二方面,本申请实施例还提供了一种日志分类装置,所述装置包括:

获取模块,用于获取软件运行过程中产生的至少一条日志;

特征提取模块,用于获取至少一条日志中每条日志的特征信息,每条日志的特征信息中包含相应日志的结构特征;

聚类模块,用于根据至少一条日志中每条日志的特征信息对至少一条日志进行聚类,得到至少一个日志集,任一日志集中各条日志的结构相似。

第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器以及存储器:存储器用于存储程序代码;该处理器用于根据程序代码中的指令执行第一方面涉及的日志分类方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如第一方面所述的日志分类方法。

第五方面,本申请实施例提供了一种计算机程序产品,计算机程序产品中包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机实现第一方面所述的日志分类方法。

从以上描述可以看出,本申请实施例具有以下优点:

在获取软件运行过程中产生的至少一条日志之后,获取其中每条日志的特征信息,其中,每条日志的特征信息中包含该条日志的结构特征。进而,根据各条日志的特征信息对至少一条日志进行聚类,得到至少一个日志集,其中任一日志集的各条日志的结构相似。即,本技术方案按照日志的结构将至少一条日志分类,能够解决软件运行过程中,由于产生海量且形式多样的日志,使得日志的使用效率低的问题。通过获取包含结构特征的日志的特征信息,为对日志分类提供分类依据,以达到按照日志结构划分为多个类别的日志集的效果,使得海量且形式多样的日志按照结构分类,从而使得这些日志便于被查看,进而提高这些日志的使用效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。应理解,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1A为本申请实施例提供的日志分类方法100的示例性方法流程图;

图1B为本申请实施例提供的图1A中步骤102的示例性方法流程图;

图2为本申请实施例提供的日志特征的运算过程示意图;

图3为本申请实施例提供的一种日志分类的应用场景示意图;

图4A为本申请实施例提供的日志展示界面的一种示例性界面示意图;

图4B为本申请实施例提供的日志展示界面的另一种示例性界面示意图;

图5A为本申请实施例提供的日志分类装置50的示例性组成示意图;

图5B为本申请实施例提供的电子设备51的示例性结构示意图。

具体实施方式

下面结合本申请实施例中的附图,对本申请实施例的技术方案进行描述。

本申请以下实施例中所使用的术语是为了描述特定实施例的目的,而并非旨在作为对本申请技术方案的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,尽管在以下实施例中可能采用术语第一、第二等来描述某一类对象,但所述对象不应限于这些术语。这些术语用来将该类对象的具体实现对象进行区分。例如,以下实施例中采用术语第一、第二等来描述预设条件,但预设条件不限于这些术语。这些术语仅用来区分特征不同的预设条件类簇。以下实施例中可能采用术语第一、第二等来描述的其他类对象同理,此处不再赘述。

本申请实施例涉及数据处理技术领域,公开了一种按照日志结构将软件运行产生的日志进行分类的方案。将软件运行产生的海量且形式多样的日志,按日志结构分类之后,使得这些日志便于被查看,从而能够提高这些日志的使用效率。例如,在软件运行异常的情况下,可以通过各类型日志数量的变化,锁定可能与异常相关的日志,进而分析产生异常的原因。

本申请实施例涉及的软件,可以包括应用程序,或者,包含多个应用程序的系统平台等,例如天气APP(application)、社交平台APP和游戏等。

本申请实施例涉及的日志(log)可以是软件运行过程中产生的程序日志,可以记录软件的基本信息(例如,记录游戏当前在线的人数等)、软件的运行信息(例如,游戏加载游戏场景的信息、某功能模块运行出错的信息等)和用户的操作信息(例如,用户操作的虚拟对象的战斗信息、响应用户操作切换游戏场景的信息、以及用户帐户登录和退出信息等)等。显然,软件运行过程中产生的日志包含多个业务场景的日志,这里所说的业务场景包括软件的运行场景和用户的操作场景,例如前述某功能模块运行出错的场景、用户登录帐户的场景和用户退出帐户的场景。

本申请实施例涉及的“日志的结构”也可以称为“日志的格式”或者“日志的组成形式”,旨在表达日志表现形式方面的特征,日志表现形式方面的特征可以用于从表现形式层面将一条日志与其他日志进行区别。需要说明的是,不同业务场景对应的描述信息不同,示例性的,描述信息的内容、呈现形式以及信息的长度中的至少一项不同。基于此,日志表现形式方面的特征例如可以包括:日志的总长度(例如总字节数)、日志中长度最大的字段的总长度和日志是否包含数字字段等。本申请实施例中,将日志表现形式方面的特征称为日志的结构特征。

本申请实施例提供了一种日志分类方法,该日志分类方法可以由一个电子设备执行,也可以由计算机集群执行。该计算机集群包括至少两个支持本申请实施例的日志分类方法的电子设备,任一电子设备可以通过部署与日志分类相关的程序实现本申请实施例所描述的日志分类功能。

可选的,在该日志分类方法由计算机集群执行的场景中,该计算机集群可以实现为一区块链,相应的,该计算机集群中的每个电子设备作为该区块链中的一个节点。即,在该场景中,本申请实施例的日志分类方法由区块链上的至少一个节点执行。

本申请实施例涉及的任一电子设备,可以是支持日志分类功能的个人计算机、服务器或者多个服务器构成的服务器系统,还可以是云平台或者其他计算系统等。可以理解的是,本申请实施例对电子设备的具体类型不作任何限制。

前述电子设备之中可以部署日志管理系统或者日志分类系统,以通过所部署的日志管理系统或者日志分类系统执行本申请的技术方案。一些实施方式中,该电子设备和运行相关软件的设备是同一台设备。另一些实施方式中,该电子设备和运行相关软件的设备分别是不同的设备。本实施方式中,运行相关软件的设备可以将软件运行过程中产生的日志,发送到部署日志管理系统或者日志分类系统的电子设备,以使部署日志管理系统或者日志分类系统的电子设备执行本申请的日志分类操作。

下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。

请参考图1A,本申请实施例提供了一种日志分类方法100(以下简称方法100),本实施方式中,方法100可以由前述支持日志分类功能的电子设备执行。方法100包括:

在步骤101中,电子设备获取软件运行过程中产生的至少一条日志。

以软件实现为游戏为例,至少一条日志中的每条日志可以包含以下字段:时间、级别、角色类型、用户帐户、业务场景描述等,其中,时间指示产生该条日志的时间,级别指示该条日志的紧急程度,角色类型指示用户对应虚拟角色的类型,用户帐户指示用户的帐户信息,业务场景描述指示该条日志对应的业务场景。

例如,日志“20191219 12:33:02.120329[INFO]char{42000085EDCDA1D}leftdungeon 9E5A8040007FA”包括字段“2019121912:33:02.120329”、字段“[INFO]”、字段“char”、字段“{42000085EDCDA1D}”、字段“left dungeon”和字段“9E5A8040007FA”。其中,字段“20191219 12:33:02.120329”指示产生该日志的时间。字段“[INFO]”指示该条日志是信息日志,紧急程度为“一般”。字段“char”指示游戏虚拟对象的角色类型。字段“{42000085EDCDA1D}”指示游戏虚拟对象的角色类型的编号。字段“left dungeon”指示该条日志对应的业务场景描述是“离开地牢”。字段“9E5A8040007FA”指示离开的地牢的编号。

可以理解的是,前述仅是示意性描述,不构成对日志包含的字段的限定。实际实现中,日志还可以包括更多或者更少的字段。例如,另一些实施方式中,日志还可以包括文件名,文件名指示产生该条日志的功能服务器。

可选的,在软件运行过程中,电子设备可以周期性获取软件的程序日志,以对所获取的日志进行分类。例如,在软件运行过程中,电子设备以1分钟为周期,采集软件运行过程中产生的至少一条日志,进而,对该至少一条日志进行分类。

在步骤102中,电子设备获取至少一条日志中每条日志的特征信息,每条日志的特征信息中包含相应日志的结构特征。

至少一条日志中每条日志的特征信息,可以是融合相应日志的多项特征得到的,日志的多项特征例如包括日志各字段的特征和日志的结构特征等。可选的,日志的多项特征还可以包括日志的来源特征。日志的来源特征用于指示产生该日志的功能模块等信息,例如指示产生该日志的文件,或者生成该日志的函数等。关于日志包含的多项特征,以及融合日志包含的多项特征得到日志的特征的实施方式,详见下文描述。

日志的结构特征即可以体现日志表现形式的特征,例如可以包括以下至少一项:日志的长度、日志中长度最大的字段的总长度,或者日志是否包含数字字段。

可以理解的是,以上仅是示意性列举,对本申请实施例描述的日志的结构特征不构成限制。另一些实施方式中,日志的结构特征还可以包含更多或者更少的信息,例如,日志的结构特征还可以包含日志中个字段的位置关系。本申请实施例对此不限制。

一些实施方式中,对应日志包含的多项特征中的每一项特征预设置权重,权重用于指示每个特征的重要性。示例性的,权重越大,说明相应特征的重要性越高,反之,权重越小,说明相应特征的重要性越低。可选的,本申请实施例中,日志的结构特征的权重相对较大,以增加结构特征的重要性。

可选的,至少一条日志中每条日志的特征信息可以实现为每条日志的特征哈希值(hash)。特征哈希值可以是长度为32位或是64位二进制字符串。

在步骤103中,电子设备根据至少一条日志中每条日志的特征信息对至少一条日志进行聚类,得到至少一个日志集,任一日志集中各条日志的结构相似。

根据前述描述,每条日志的特征信息中,结构特征的权重相对较大,那么,根据每条日志的特征信息对至少一条日志进行聚类时,结构特征对聚类结果的影响相对较大。基于此,可以理解为,根据各条日志结构特征的相似度将至少一条日志分为至少一个类别,使得得到的至少一个日志集中,任一日志集中的各条日志的结构相似,从而可以达到按照日志结构将至少一条日志分类的效果。

一些实施方式中,当日志的特征信息实现为特征哈希值,电子设备可以通过计算两特征信息的汉明距离(Hamming distance)确定两特征信息的相似度。若两特征信息的汉明距离小于或等于一定值,则认为该两特征信息的相似度满足条件,将该两个特征信息作为一个类,若两特征信息的汉明距离大于或等于该一定值,则认为该两特征信息的相似度不满足条件,将该两个特征信息分别作为两个类。

可见,采用本申请实施例的技术方案,在获取软件运行过程中产生的至少一条日志之后,获取其中每条日志的特征信息,其中,每条日志的特征信息中包含该条日志的结构特征。进而,根据各条日志的特征信息对至少一条日志进行聚类,得到至少一个日志集,其中任一日志集的各条日志的结构相似。即,本技术方案按照日志的结构将至少一条日志分类,能够解决软件运行过程中,由于产生海量且形式多样的日志,使得日志的使用效率低的问题。通过获取包含结构特征的日志的特征信息,为对日志分类提供分类依据,以达到按照日志结构划分为多个类别的日志集的效果,使得海量且形式多样的日志按照结构分类,从而使得这些日志便于被查看,进而提高这些日志的使用效率。

另一方面,根据前述对业务场景和日志的关系可知,不同业务场景对应的日志中,包括对相关业务场景的描述信息,而不同业务场景的描述信息不同,相同业务场景的描述信息相同或者相似,从而导致不同业务场景对应的日志的结构可能不同,相同或相似业务场景的日志的结构相同或相似。例如,响应于退出操作结束游戏的场景对应的日志,与由于断电结束游戏的场景对应的日志,结构相似。再如,游戏运行过程中出错的场景对应的日志,与结束游戏的场景对应的日志,结构不同。

基于此,本申请实施例的技术方案,按照日志的结构将至少一条日志分类,还能够达到按照业务场景将日志分类的效果,使得相同或相似业务场景对应的日志属于同于日志集,从而能够进一步提高日志的使用效率。

为了进一步细化日志的类别,另一些实施方式中,若日志的特征信息中还包括日志的来源特征。日志来源特征日志的来源。日志的来源指产生该日志的功能模块,或者生成该日志的函数。基于此,前述每个日志集中的日志可以对应相同的来源。例如,一个日志集中的日志对应同一功能模块,或者一个日志集中的日志对应同一功能模块对应相同的函数。

可见,采用本实现方式,在基于结构对日志进行分类的基础上,还能够基于产生日志的文件或者函数,对日志进一步分类,从而在软件运行故障或者对监控软件运行的场景中,便于定位产生异常的功能模块或者函数,从而进一步提高日志的使用效率。

软件运行过程中产生的日志,总字符数通常小于一定数量,例如,总字符数小于100。基于此,为了确保日志的特征信息包含日志多个方面的特征,以保证分类的准确率,根据日志包含的多项特征获取日志的特征信息。另外,为了使日志的特征信息能够凸显用作分类的结构特征,通过设置权重,提高结构特征在日志包含的多项特征的重要性。

下面对本申请实施例涉及的获取日志的特征信息的实现方式进行描述。

在一个可选的实施方式中,图1A示意的步骤102可实现为如下特征提取方法。请参考图1B,图1B示意了一种获取日志的特征信息的方法,该方法包括:

在步骤1021中,电子设备获取至少一条日志中每条日志的至少一个特征字段,至少一个特征字段包括至少一个基础特征字段和至少一个结构特征字段。

该至少一个特征字段用于表征日志的多项特征,包括至少一个基础特征字段和至少一个结构特征字段。示例性的,一个日志的至少一个特征字段可以表达为:[基础特征字段1、基础特征字段2、基础特征字段3、结构特征字段1、结构特征字段2],其中,基础特征字段1、基础特征字段2、基础特征字段3、结构特征字段1和结构特征字段2均是该日志的特征字段。

至少一个结构特征字段包括以下至少一项:日志的长度字段、日志中长度最大的字段的总长度字段、或者日志是否包含数字的指示字段。示例性,前述结构特征字段1例如是日志的长度字段,结构特征字段2例如是日志中长度最大的字段的总长度字段,那么前述至少一个特征字段例如表达为:[基础特征字段1、基础特征字段2、基础特征字段3、日志的长度字段、日志中长度最大的字段的总长度字段]。

由于至少一个特征字段包括至少一个基础特征字段和至少一个结构特征字段,所以,电子设备获取至少一条日志中每条日志的至少一个特征字段的实施过程可以包括,获取至少一条日志中每条日志的至少一个基础特征字段,以及获取至少一条日志中每条日志的至少一个结构特征字段。下面分别从获取日志的基础特征字段和获取日志的结构特征字段的角度,对获取日志的特征字段的过程进行描述。

一种可能的实现方式中,至少一个基础特征字段中的每个基础特征字段是字段或者至少一个类型标签,类型标签用于指示日志中目标类型的字段的类型。

示例性,前述基础特征字段1例如是类型标签1,基础特征字段2例如是类型标签2,基础特征字段3例如是日志的字段,那么前述至少一个特征字段例如表达为:[类型标签1、类型标签2、字段3、日志的长度字段、日志中长度最大的字段的总长度字段]。

可选的,目标类型是指日志中类型确定,但呈现内容多样的字段的类型,例如,时间字段的类型是“时间(time)”,而时间的具体内容较为复杂多样,那么时间类型即为一种目标类型。再如,数字字段的类型是“数字(number,num)”,而数字的具体内容同样较为复杂多样,那么数字类型即为一种目标类型。相对应的,日志中除了目标类型之外的其他字段的类型,为非目标类型,例如,日志“2019121912:33:02[ABC]char{XYZ}”中的字段“[ABC]”、字段“char”和字段“{XYZ}”的类型,均为非目标类型。

本示例中,每种目标类型对应一个类型标签,以表征该目标类型的字段的特征。例如,时间类型的类型标签可以是“time”,数字类型的类型标签可以是“num”。

可选的,为了降低提取特征过程的复杂度,电子设备在获取至少一条日志中每条日志的至少一个基础特征字段的过程中,对应所述至少一条日志中的每条日志,可以识别该日志中每个字段的类型,每个字段的类型是至少一个目标类型或者非目标类型。进而,将日志中类型为目标类型的字段对应的类型标签,作为日志的基础特征字段。将日志中类型为非目标类型的字段,作为日志的基础特征字段。

例如,日志“2019121912:33:02[ABC]char{XYZ}”包含的字段“2019121912:33:02”、字段“[ABC]”、字段“char”和字段“{XYZ}”中,字段“2019121912:33:02”是目标类型(时间类型)的字段,字段“[ABC]”、字段“char”和字段“{XYZ}”均是非目标类型。将字段“2019121912:33:02”对应的类型标签“time”作为字段“[ABC]”、字段“char”和字段“{XYZ}”对应的基础特征字段,将字段“[ABC]”、字段“char”和字段“{XYZ}”分别作为基础特征字段,得到日志“2019121912:33:02[ABC]char{XYZ}”的至少一个基础特征字段[time,ABC,char,XYZ]。

采用本实现方式,使用类型标签作为目标类型字段的特征字段,能够在确保字段特征不变的情况下,降低计算的复杂度。

电子设备可以根据需求,采用以下至少一种实现方式获取至少一条日志中每条日志的至少一个结构特征字段。

实现方式一:对应至少一条日志中的每条日志,获取日志的长度,将日志的长度作为日志的结构特征字段。

可选的,日志的长度可以表示为日志所包含的字符数量,也可以表示为日志所包含的字段的字节数。日志的长度例如可以表达为log_seg_length。

一些实施方式中,电子设备可以在获取到日志之后,获取原始日志的长度。另一些实施方式中,电子设备可以在获取日志的基础特征字段之后,将该日志的全部基础特征字段的总长度作为该日志的长度。本申请实施例对此不限制。

实现方式二:对应至少一条日志中的每条日志,识别日志中长度最大的字段,以及获取长度最大的字段的长度,将长度最大的字段的长度作为日志的结构特征字段。

可选的,长度最大的字段的长度例如可以表达为max_word_length。

实现方式三:对应至少一条日志中的每条日志,识别日志中是否包含数字字段,以及将识别结果作为日志的结构特征字段。

可选的,日志是否包含数字字段的识别结果,可以通过“对/错(true/false)”标识符表达。例如,若日志包含数字字段,识别结果是“true”,若日志不包含数字字段,识别结果是“false”。

另一些实施方式中,每个日志的至少一个特征字段还包括:至少一个来源特征字段。至少一个来源特征字段包括文件名或函数名中的至少一个。文件名例如实现为scenen/transaction.cpp,函数名例如实现为GetNewSerialStep()。

以下以日志“20191219 12:33:02.120329[INFO]char{象大力:41003035DFAFD7E}entered dungeon 3A2B806019A2C position 10char count 11,ownerid41009035DFAFD5C”为例,对获取至少一个特征字段进行说明。其中,“20191219 12:33:02.120329”、“[INFO]”、“char{象大力:41003035DFAFD7E}”的含义如前述实施例所述,此处不赘述。“entered dungeon 3A2B806019A2C”指示进入编号为“3A2B806019A2C”的地牢,“position 10”指示地牢的位置是10,“ownerid 41009035DFAFD5C”指示用户的帐户编号是41009035DFAFD5C。

对日志“20191219 12:33:02.120329[INFO]char{象大力:41003035DFAFD7E}entered dungeon 3A2B806019A2C position 10char count 11,ownerid41009035DFAFD5C”进行清洗和分词,得到字段集合['20191219 12:33:02.120329','info','char','象大力:41003035dfafd7e','entered','dungeon','3a2b806019a2c','position','10','char','count','11','ownerid','41009035dfafd5c']。其中,字段'20191219 12:33:02.120329'是时间类型的字段,字段'10'、字段'11'和字段'1'均是数字类型的字段,那么将字段'20191219 12:33:02.120329'转换为标签“time”,分别将字段'10'、和字段'11'转换为标签“num”,得到该日志的基础特征字段集合['#time#','info','char','象大力:41003035dfafd7e','entered','dungeon','3a2b806019a2c','position','#num#','char','count','#num#','ownerid','41009035dfafd5c']。

本示例中,还需要获取该日志的长度log_seg_length和最长字段的长度max_word_length。将字段'log_seg_length'和字段'max_word_length',作为该日志的结构特征字段,得到该日志的特征字段集合['#time#','info','char','象大力:41003035dfafd7e','entered','dungeon','3a2b806019a2c','position','#num#','char','count','#num#','ownerid','41009035dfafd5c','log_seg_length','max_word_length']。

再如,日志“20191219 12:33:02.120329[INFO]char{象大力:41003035DFAFD7E}entered dungeon 3A2B806019A2C position 10charcount 11,ownerid41009035DFAFD5C…[scenen/transaction.cpp:GetNewSerialStep():688]”中,[scenen/transaction.cpp:GetNewSerialStep():688]表征该日志的来源,其中,scenen/transaction.cpp指示产生该日志的文件名,和函数名GetNewSerialStep()指示产生该日志的函数。

本示例中,在获取前述基础特征字段和结构特征字段的基础上,还可以从[scenen/transaction.cpp:GetNewSerialStep():688]中提取日志的来源特征字段,例如提取文件名scenen/transaction.cpp。得到该日志的特征字段集合['#time#','info','char','象大力:41003035dfafd7e','entered','dungeon','3a2b806019a2c','position','#num#','char','count','#num#','ownerid','41009035dfafd5c','log_seg_length','max_word_length','scenen/transaction.cpp']。

在步骤1022中,电子设备获取至少一条日志中每条日志的至少一个特征字段中每个特征字段的特征向量。

至少一个特征字段中每个特征字段的特征向量可以实现为特征哈希值。可选的,电子设备可以采用md5(Message-Digest Algorithm,信息摘要算法),计算得到前述每个特征字段的哈希值。可选的,电子设备也可以采用SHA-1(Secure Hash Algorithm 1,安全散列算法1)计算得到前述每个特征字段的特征向量。

一种可选示例中,可以为每个特征字段的特征向量预配置权重,其中,结构特征字段的特征向量对应的权重,相较于基础特征字段的特征向量的权重更大。具体的,结构特征字段的特征向量对应的最小权重,大于基础特征字段的特征向量的最大权重。例如,特征向量集合[x1、x2、x3、x4、x5]中,x1、x2和x3分别是不同基础特征字段的特征向量,x4和x5分别是结构特征字段的特征向量。至少一个特征字段[类型标签1、类型标签2、字段3、日志的长度字段、日志中长度最大的字段的总长度字段]中,x1的权重、x2的权重和x3的权重均是1,x4的权重是3,x5的权重是4。

另一些实施方式中,若至少一个特征字段中还包括日志的来源特征字段,可选的,来源特征字段对应的权重,大于至少一个特征字段中其他各类特征字段对应的权重。

应理解,各个特征字段的权重可以根据实际实施场景灵活设置,本申请实施例对此不限制。

可选的,本技术方案中涉及的权重,可以基于学习算法训练得到。

在步骤1023中,电子设备对应至少一条日志中的每条日志,融合所述日志的至少一个特征字段的各个特征字段的特征向量,得到所述日志的特征信息。

对应每个日志,电子设备可以对该日志对应的各个特征向量和相应权重加权求和,之后,对加权求和的结果二值化,得到该日志的特征信息。

例如,日志对应的特征向量集合是[x1、x2、x3],其中,x1、x2和x3分别是该日志的一个特征字段的特征向量,分别如下所示:

x1:[01010]

x2:[00110]

x3:[10111]

x1的权重是1,x2的权重是1,x3的权重是2。

如图2所示,其中,特征向量中的“1”乘权重之后的值,取正值,“0”乘权重之后的值,取负值。使得x1中的每一位乘1,得到[-1 1 -1 1 -1]。x2中的每一位乘1,得到[-1 -1 11 -1]。x3中的每一位乘3,[3 -3 3 3 3]。将[-1 1 -1 1 -1]、[-1 -1 1 1 -1]和[3 -3 3 33]相加,得到[1 -3 3 5 1]。之后,对[1 -3 3 5 1]二值化得到[1 0 1 1 1],[1 0 1 1 1]即为该日志的特征信息。

可见,采用本实现方式,不受日志包含的字段数量的限制,适用性好,且具备可扩展性。另外,采用本实现方式,能够基于日志的多项特征获取日志的特征信息,以是分类更加准确。

进一步的,在获取前述各条日志的特征信息之后,电子设备基于各条日志特征的相似度,通过对至少一条日志聚类得到至少一个日志集。其中,根据前述描述可知,每条日志的特征信息是日志的各项特征字段及其权重加权求和得到,而其中结构特征字段对应的最小的权重大于基础特征字段对应的最大的权重,所以,可以理解为,电子设备基于各条日志结构特征的相似度得到的至少一个日志集。

下面对本申请实施例涉及的聚类的实现方式进行描述。

在一个可选的实施方式中,遍历前述至少一条日志。针对遍历到的日志,根据该日志与已有的至少一个类簇中每个类簇的相似度,确定日志所属的类簇,并获取更新后的至少一个类簇。重复执行聚类操作,直到遍历完成。其中,已有的至少一个类簇根据已经完成遍历的日志得到。

可选的,初始类簇可以为空。当遍历到至少一条日志中的第1条日志,将第1条日志作为一个类簇。

针对遍历到的日志,根据该日志与已有的至少一个类簇中每个类簇的相似度,确定日志所属的类簇包括:获取该日志的特征信息与每个类簇的中心特征的相似度。若日志的特征信息与每个类簇的中心特征的相似度均不满足第一预设条件,将日志确定为新的类簇,获取更新后的至少一个类簇,每个类簇的中心特征根据相应类簇中各个日志的特征得到。若日志的特征信息与第一类簇的中心特征满足第一预设条件,确定日志属于第一类簇,以及根据日志的特征信息更新第一类簇的中心特征,获取更新后的至少一个类簇,第一类簇是已有的至少一个类簇中的任一类簇。

第一预设条件可以实现为,日志的特征信息与类簇的中心特征的距离,是否小于或者等于第一预设值h1,若日志的特征信息与类簇的中心特征的距离小于或者等于h1,则认为满足第一预设条件,若日志的特征信息与类簇的中心特征的距离大于或者等于h1,则认为不满足第一预设条件。

例如,当前已有三个类簇,该三个类簇的中心特征分别为C1、C2、和C3。电子设备计算日志的特征信息分别与C1、C2、和C3的距离,得到三个距离值。若该三个距离值均大于h1,说明日志不属于该三个类,将日志作为新的类簇,并将日志的特征信息作为第四个类簇的中心特征,该四个类簇的中心特征分别为C1、C2、C3和C4。若日志的特征信息与C1的距离值小于h1,说明日志属于C1对应的类,合并日志的特征信息和C1,得到新的类簇的中心特征C1’,得到三个类簇的中心特征分别为C1’、C2和C3。

可选的,在对至少一条日志遍历完成后,遍历所得到的至少一个类簇,若其中任意两个类簇中心特征的相似度满足第二预设条件,合并该两个类簇,得到表征至少一个日志集的至少一个类簇。

可选的,第二预设条件可以实现为,两类簇中心特征的距离是否小于或者等于第二预设值h2,若两类簇中心特征的距离小于或者等于第二预设值h2,则认为满足第二预设条件,若两类簇中心特征的距离大于或者等于第二预设值h2,则认为不满足第二预设条件。

以四个类簇为例,该四个类簇的中心特征分别为C1、C2、C3和C4。分别计算C1、C2、C3和C4中两两之间的距离,例如,C1和C2的距离小于h2,合并C1对应的类簇和C2对应的类簇,得到中心特征为C1”的类簇。C1”、C3和C4分别对应一个日志集。

可以理解的是,前述各个类簇以及中心特征,仅是示意性描述,不构成对本申请实施例涉及的类簇等的限制。另一些实施方式中,本技术方案包含的类簇可以更多。

综上,本申请实施例的实现方式中,在获取软件运行过程中产生的至少一条日志之后,获取其中每条日志的特征信息,其中,每条日志的特征信息中包含该条日志的结构特征。进而,根据各条日志的特征信息对至少一条日志进行聚类,得到至少一个日志集,其中任一日志集的各条日志的结构相似。即,本技术方案按照日志的结构将至少一条日志分类,能够解决软件运行过程中,由于产生海量且形式多样的日志,使得日志的使用效率低的问题。通过获取包含结构特征的日志的特征信息,为对日志分类提供分类依据,以达到按照日志结构划分为多个类别的日志集的效果,使得海量且形式多样的日志按照结构分类,从而使得这些日志便于被查看,进而提高这些日志的使用效率。

在实际实现场景中,在得到前述至少一个日志集之后,电子设备还可以基于分类结果生成至少一个日志集的衍生信息,这些衍生信息可以用于向用户展示,以便于监控软件的运行状态。

可选的,衍生信息可以包括以下至少一个:至少一个日志集中每个日志集包含的日志的数量、至少一个日志集中是否包括包含一条日志的日志集,或者错误日志的相关数据等。

一种可能的示例中,电子设备可以部署用于展示日志衍生信息的应用程序,进而,展示相关的衍生信息。该应用程序例如可以支持日志查看、日志检索,日志监控、日志分析等功能。

请参考图3,图3为本申请实施例提供的一种日志分类的应用场景示意图。在软件运行过程中,电子设备周期性获取软件运行产生的至少一条日志。对每个周期的至少一条日志,电子设备分别进行清洗、分词、获取其中每条日志的多个特征字段,然后,获取该多个特征字段中各个特征字段的特征向量,并根据该各个特征向量获取相应日志的特征信息。基于至少一条日志的特征信息进行聚类,以将该至少一条日志的分为多个集。然后,电子设备可以基于该多个集的信息,展示至少一条日志的相关信息。

电子设备获取日志的特征信息,以及根据日志的特征信息聚类得到多个日志集的过程,详见前述实施例的描述,此处不赘述。

请参考图4A,图4A为本申请实施例提供的日志展示界面的一种示例性界面示意图。图4A示意的界面中包括搜索条件“聚类级别”、搜索条件“聚类状态”、搜索条件“服务名”、搜索条件“函数名”和日志展示区域。搜索条件“聚类级别”包括“全部”、“一般”、“警告”和“错误”搜索选项。搜索条件“聚类状态”包括“全部”、“非新增异常”、“新增异常”和“正常”,响应于任一可选项的触发操作,电子设备在日志展示区域展示相应日志信息。响应于搜索条件“服务名”的输入内容,或者搜索条件“函数名”的输入内容,日志展示区域展示相关日志的信息。日志展示区域可以展示日志的编号、关键字段、出现次数、服务名、函数名等信息。

可选的,图4A中示意的聚类级别的各个选项,可以分别指示不同的业务场景,这些业务场景所对应日志的结构相互之间不相同,基于此,可以基于前述日志分类方法分为多个日志集,该多个日志集分别对应“一般”、“警告”和“错误”三个业务场景。其中,“一般”例如表示常规的运行业务场景,例如,游戏加载到某场景、和响应用户的操作,为用户操作的虚拟对象匹配功能等。“警告”例如可以表示软件运行过程,展示告警信息的业务场景,例如,向用户展示调用某功能的安全警告信息。“错误”可以表示软件运行异常的业务场景,例如,无法相应用户的操作,调用某些功能。

可选的,图4A中示意的聚类状态,可以是在日志分类之后,针对异常场景对应的日志以及日志集的展示。其中,“非新增异常”例如表示本周期分类得到表征异常场景的日志集中增加了新的日志,所增加的新的日志表征的异常在之前曾经产生过。“新增异常”例如表示本周期分类得到新的日志集,该新的日志集中的日志表征异常场景。“正常”例如表示常规的运行业务场景。

可选的,图4A示意的“服务名”指示产生日志的功能模块,该功能模块通过日志中的特征字段“文件名”表征。若接收到用户输入的一个服务名,电子设备获取相应文件产生的日志并展示。图4A示意的“函数名”指示产生日志的函数,通过日志中的特征字段“函数名”表征。若接收到用户输入的一个函数名,电子设备获取使用相应函数产生的日志并展示。

请参考图4B,图4B为本申请实施例提供的日志展示界面的另一种示例性界面示意图。图4B示意的界面中例如展示了一段时间内的错误日志报告,包括错误标识、最新错误日志、服务名、出现次数、出现天数等信息。

可选的,图4B示意的展示界面,可以是根据结构分类得到日志集后,对应错误业务场景对应结构的日志集,得到的衍生信息。

可选的,图4B示意的“服务名”指示产生日志的功能模块,该功能模块通过日志中的特征字段“文件名”表征,此处不详述。

可见,采用本实现方式,电子设备能够基于日志的分类信息,统筹并展示日志的衍生信息,以便于用户查看这些日志,提高日志的使用效率。

综上,本申请实施例的日志分类方法,在获取软件运行过程中产生的至少一条日志之后,根据各条日志的特征信息对至少一条日志进行聚类,得到至少一个日志集,其中任一日志集的各条日志的结构相似。即,本技术方案根据日志的结构,将至少一条日志分类,能够解决软件运行过程中,由于产生海量且形式多样的日志,使得日志的使用效率低的问题。通过获取包含结构特征的特征信息,为对日志分类提供分类依据,以达到按照日志结构划分为多个类别的日志集的效果,使得海量且形式多样的日志按照结构分类,从而使得这些日志便于被查看,进而提高这些日志的使用效率。

进一步的,电子设备还可以基于日志的类别,获取个日志集的衍生信息,以通过可视化应用程序,展示相关衍生信息,从而向用户提供日志查看、日志检索、日志监控或日志分析等功能。

另外,由于本技术方案的分类操作,不受日志包含的字段数量的限制,适用性好,且具备可扩展性,能够支持不同的业务场景。

上述实施例从日志特征信息的获取、聚类等电子设备所执行动作的角度,对本申请实施例提供的日志分类方法的各实施方式进行了介绍。应理解,对应日志特征的获取、聚类等的处理步骤,本申请实施例可以以硬件或硬件和计算机软件的结合形式来实现上述功能。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

例如,若上述实现步骤通过软件模块来实现相应的功能。如图5A所示,提供了一种日志分类装置50,日志分类装置50可以包括获取模块501、特征提取模块502和聚类模块503。该日志分类装置50可用于执行上述图1A至图3中电子设备的部分或全部操作。

例如:获取模块501,用于获取软件运行过程中产生的至少一条日志。特征提取模块502,用于获取至少一条日志中每条日志的特征信息,每条日志的特征信息中包含相应日志的结构特征。聚类模块503,用于根据至少一条日志中各条日志的特征信息对至少一条日志进行聚类,得到至少一个日志集,任一日志集中各条日志的结构相似。

由此可见,本申请实施例提供的日志分类装置50,在获取软件运行过程中产生的至少一条日志之后,获取其中每条日志的特征信息,其中,每条日志的特征信息中包含该条日志的结构特征。进而,根据各条日志的特征信息对至少一条日志进行聚类,得到至少一个日志集,其中任一日志集的各条日志的结构相似。即,本技术方案按照日志的结构将至少一条日志分类,能够解决软件运行过程中,由于产生海量且形式多样的日志,使得日志的使用效率低的问题。通过获取包含结构特征的日志的特征信息,为对日志分类提供分类依据,以达到按照日志结构划分为多个类别的日志集的效果,使得海量且形式多样的日志按照结构分类,从而使得这些日志便于被查看,进而提高这些日志的使用效率。

可选的,特征提取模块502,还用于获取至少一条日志中每条日志的至少一个特征字段,至少一个特征字段包括至少一个基础特征字段和至少一个结构特征字段;至少一个结构特征字段包括以下至少一项:相应日志的长度字段、相应日志中长度最大的字段的总长度字段、或者相应日志是否包含数字的指示字段。特征提取模块502,还用于获取至少一条日志中每条日志的至少一个特征字段中每个特征字段的特征向量。本示例中,特征提取模块502,还用于对应至少一条日志中的每条日志,融合日志的至少一个特征字段中各个特征字段的特征向量,得到日志的特征信息。

可选的,特征提取模块502,还用于获取至少一条日志中每条日志的至少一个基础特征字段,以及获取至少一条日志中每条日志的至少一个结构特征字段。

可选的,至少一个基础特征字段中的每个基础特征字段是日志的字段或者至少一个类型标签,类型标签用于指示相应日志中目标类型的字段的类型,特征提取模块502,还用于对应至少一条日志中的每条日志,识别日志中每个字段的类型,每个字段的类型是至少一个目标类型或者非目标类型;将日志中类型为目标类型的字段对应的类型标签,作为日志的基础特征字段;将日志中类型为非目标类型的字段,作为日志的基础特征字段。

可选的,特征提取模块502,还用于对应至少一条日志中的每条日志,获取日志的长度,将日志的长度作为日志的结构特征字段。另一种实施方式中,特征提取模块502,还用于对应至少一条日志中的每条日志,识别日志中长度最大的字段,以及获取长度最大的字段的长度,将长度最大的字段的长度作为日志的结构特征字段。再一种实施方式中,特征提取模块502,还用于对应至少一条日志中的每条日志,识别日志中是否包含数字字段,以及将识别结果作为日志的结构特征字段。

可选的,至少一个特征字段还包括:至少一个来源特征字段,来源特征字段用于指示软件中产生相应日志的功能模块,或者生成日志的函数;至少一个日志集的任一日志集中各个日志具备相同的来源特征。

可选的,聚类模块503还用于执行聚类操作。本示例中,聚类模块503具体用于遍历至少一条日志,针对遍历到的日志,根据日志与已有的至少一个类簇中每个类簇的相似度,确定日志所属的类簇,并获取更新后的至少一个类簇,其中,已有的至少一个类簇根据已经完成遍历的日志得到,相似度是根据日志的特征信息与其中任一类簇的中心特征得到,日志的特征信息是日志的基础特征字段及其权重,和结构特征字段及其权重加权求和得到,其中,结构特征字段对应的最小的权重大于基础特征字段对应的最大的权重。聚类模块503还用于重复执行聚类操作,直到遍历完成。

可选的,聚类模块503还用于获取日志的特征信息与每个类簇的中心特征的相似度。若日志的特征信息与每个类簇的中心特征的相似度均不满足预设条件,聚类模块503还用于将日志确定为新的类簇,每个类簇的中心特征根据相应类簇中各个日志的特征信息得到。若日志的特征信息与第一类簇的中心特征满足预设条件,聚类模块503还用于确定日志属于第一类簇,以及根据日志的特征信息更新第一类簇的中心特征,第一类簇是已有的至少一个类簇中的任一类簇。

可选的,该日志分类装置50还包括展示模块,展示模块用于展示至少一个日志集的衍生信息,衍生信息是根据至少一个日志集得到的,衍生信息包括以下至少一个:至少一个日志集中每个日志集包含的日志的数量、或者至少一个日志集中是否包括包含一条日志的日志集。

可以理解的是,以上各个模块的划分仅仅是一种逻辑功能的划分,实际实现时,该以上各模块的功能可以集成到硬件实体实现,例如,获取模块501的功能可以集成到通信接口实现,特征提取模块502的功能和聚类模块503的功能可以集成到处理器实现等。

请参见图5B,其示出了本申请实施例提供的电子设备51的结构示意图。该电子设备51包括:处理器511、存储器512以及通信接口513。

通信接口513通过总线或其它方式与处理器511相连,用于接收软件运行过程中产生的至少一条日志。

处理器511可以是中央处理器(英文:central processing unit,CPU),网络处理器(英文:network processor,NP)或者CPU和NP的组合。处理器1001还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specificintegratedcircuit,ASIC),可编程逻辑器件(英文:programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logicdevice,CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,FPGA),通用阵列逻辑(英文:generic array logic,GAL)或其任意组合。

存储器512通过总线或其它方式与处理器511相连,存储器512中存储有至少一条指令、至少一段程序、代码集或指令集,上述至少一条指令、至少一段程序、代码集或指令集由处理器1001加载并执行以实现如图1A至图3中任一图示所示的文件分类方法。存储器512可以为易失性存储器(英文:volatile memory),非易失性存储器(英文:non-volatilememory)或者它们的组合。易失性存储器可以为随机存取存储器(英文:random-accessmemory,RAM),例如静态随机存取存储器(英文:static random access memory,SRAM),动态随机存取存储器(英文:dynamic random access memory,DRAM)。非易失性存储器可以为只读存储器(英文:read only memory image,ROM),例如可编程只读存储器(英文:programmableread only memory,PROM),可擦除可编程只读存储器(英文:erasableprogrammable readonly memory,EPROM),电可擦除可编程只读存储器(英文:electrically erasableprogrammable read-only memory,EEPROM)。非易失性存储器也可以为快闪存储器(英文:flash memory),磁存储器,例如磁带(英文:magnetic tape),软盘(英文:floppy disk),硬盘。非易失性存储器也可以为光盘。

本申请实施例还提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如图1A至图3中任一图示所示的文件分类方法,可选地,该计算机可读存储介质包括高速存取存储器、非易失性存储器。

本申请实施例还提供了一种计算机程序产品,该程序产品中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如图1A至图3中任一图示所示的文件分类方法。

应理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对实施例的实施过程构成任何限定。

本说明书的各个部分均采用递进的方式进行描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点介绍的都是与其他实施例不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 日志分类模型的建立、行为日志分类方法及装置
  • 计算机日志的分类方法和装置、存储介质及电子装置
技术分类

06120113240530