日志文件的生成方法、检索方法及装置与流程

文档序号:15737017发布日期:2018-10-23 21:39阅读:205来源:国知局
本发明涉及计算机及互联网
技术领域
,具体而言,涉及一种日志文件的生成方法、检索方法及装置。
背景技术
:目前,计算机系统在运行过程中,每天都会产生海量的日志。这些日志包括但不限于系统日志、错误日志、业务日志等。由于互联网公司的业务线较多,每个业务线在线上部署的服务器数以千计,一旦系统出现问题,往往需要人工手动登录服务器查看日志,这是一种效率非常低的工作。特别是在不能直接定位出问题的服务器时,就需要逐一登录每台服务器来查看,费时费力。同时,大量日志分散在各个系统的各个服务器中,在分析问题的时候往往不能有效地将这些日志串联起来分析,这样也给定位问题点造成了非常大的麻烦。需要说明的是,在上述
背景技术
部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。技术实现要素:本发明的目的在于提供一种日志文件的生成及检索方案,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。根据本发明的第一方面,提供一种日志文件的生成方法,包括:配置日志文件的数据结构,所述数据结构包含有第一字段,所述第一字段的值用于标识产生日志的事件;在系统运行的过程中,基于所述数据结构生成日志,其中,同一事件产生的多条日志中的所述第一字段的值相同。在本发明的一些实施例中,基于上述方案,所述数据结构还包含第二字段,所述第二字段的值用于标识同一事件产生的至少一条日志的层级关系。在本发明的一些实施例中,基于上述方案,还包括:在生成任一事件对应的日志时,确定所述任一事件触发的至少一个动作;根据所述任一事件触发的至少一个动作的执行顺序,确定基于所述任一事件产生的至少一条日志的层级关系,其中,每个动作对应于一条日志;根据所述任一事件产生的至少一条日志的层级关系,在生成的日志中设置所述第二字段的值。在本发明的一些实施例中,基于上述方案,所述第二字段包括:动作标识和层级标识;所述层级标识包括间隔排列的字符串和层级标识符,所述层级标识符的个数与日志的层级数成正相关关系。根据本发明的第二方面,还提出了一种日志文件的检索方法,包括:获取系统在运行过程中产生的日志,所述日志的数据结构包含有第一字段,所述第一字段的值用于标识产生日志的事件,其中,同一事件产生的多条日志中的所述第一字段的值相同;获取日志文件的检索条件;基于所述检索条件,查找匹配的日志。在本发明的一些实施例中,基于上述方案,所述数据结构还包含第二字段,所述第二字段的值用于标识同一事件产生的至少一条日志的层级关系。在本发明的一些实施例中,基于上述方案,还包括:若查找到的日志中有多条日志的第一字段的值相同,则根据所述多条日志中的第二字段的值确定所述多条日志的层级关系;基于所述多条日志的层级关系,展示所述多条日志。在本发明的一些实施例中,基于上述方案,还包括:在获取到系统在运行过程中产生的日志之后,检查获取到的日志的格式;若获取到的任一日志的格式与所述数据结构不匹配,则丢弃所述任一日志;若获取到的任一日志的格式与所述数据结构相匹配,则存储所述任一日志。根据本发明的第三方面,还提出了一种日志文件的生成装置,包括:配置单元,用于配置日志文件的数据结构,所述数据结构包含有第一字段,所述第一字段的值用于标识产生日志的事件;生成单元,用于在系统运行的过程中,基于所述数据结构生成日志,其中,同一事件产生的多条日志中的所述第一字段的值相同。在本发明的一些实施例中,基于上述方案,所述数据结构还包含第二字段,所述第二字段的值用于标识同一事件产生的至少一条日志的层级关系。在本发明的一些实施例中,基于上述方案,所述生成单元包括:确定单元,用于在生成任一事件对应的日志时,确定所述任一事件触发的至少一个动作,根据所述任一事件触发的至少一个动作的执行顺序,确定基于所述任一事件产生的至少一条日志的层级关系,其中,每个动作对应于一条日志;设置单元,用于根据所述任一事件产生的至少一条日志的层级关系,在生成的日志中设置所述第二字段的值。在本发明的一些实施例中,基于上述方案,所述第二字段包括:动作标识和层级标识;所述层级标识包括间隔排列的字符串和层级标识符,所述层级标识符的个数与日志的层级数成正相关关系。根据本发明的第四方面,还提出了一种日志文件的检索装置,包括:第一获取单元,用于获取系统在运行过程中产生的日志,所述日志的数据结构包含有第一字段,所述第一字段的值用于标识产生日志的事件,其中,同一事件产生的多条日志中的所述第一字段的值相同;第二获取单元,用于获取日志文件的检索条件;处理单元,用于基于所述检索条件,查找匹配的日志。在本发明的一些实施例中,基于上述方案,所述数据结构还包含第二字段,所述第二字段的值用于标识同一事件产生的至少一条日志的层级关系。在本发明的一些实施例中,基于上述方案,还包括:确定单元,用于在所述处理单元查找到的日志中有多条日志的第一字段的值相同时,根据所述多条日志中的第二字段的值确定所述多条日志的层级关系;展示单元,用于基于所述多条日志的层级关系,展示所述多条日志。在本发明的一些实施例中,基于上述方案,还包括:检查单元,用于在所述第一获取单元获取到系统在运行过程中产生的日志之后,检查获取到的日志的格式;存储单元,用于在所述检查单元确定获取到的任一日志的格式与所述数据结构不匹配时,丢弃所述任一日志,并用于在所述检查单元确定获取到的任一日志的格式与所述数据结构相匹配时,存储所述任一日志。在本发明的一些实施例所提供的技术方案中,由于日志文件的数据结构中包含有第一字段,该第一字段的值用于标识产生日志的事件,且同一事件产生的多条日志中的第一字段的值相同,因此在查询日志时,能够基于日志中的第一字段的值来查询到具有关联关系的多个日志。而通过在日志文件的数据结构中加入第二字段,以标识同一事件产生的至少一条日志的层级关系,使得在查询日志时,能够基于日志中的第二字段的值来确定日志之间的层级关系,解决了日志串联不起来的问题,提高了系统开发和维护人员的工作效率。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1示意性示出了根据本发明的一个实施例的日志文件的生成方法的流程图;图2示意性示出了根据本发明的一个实施例的日志文件的检索方法的流程图;图3示意性示出了根据本发明的一个实施例的日志文件的处理方法的流程图;图4示意性示出了根据本发明的实施例的供用户输入检索条件的界面图;图5示意性示出了根据本发明的实施例的日志检索结果界面图;图6示意性示出了根据本发明的实施例的日志之间的关联及层级关系示意图;图7示意性示出了根据本发明的一个实施例的日志文件的生成装置的框图;图8示意性示出了根据本发明的一个实施例的日志文件的检索装置的框图。具体实施方式现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。图1示意性示出了根据本发明的一个实施例的日志文件的生成方法的流程图。参照图1,根据本发明的一个实施例的日志文件的生成方法,包括以下步骤:步骤S102,配置日志文件的数据结构,所述数据结构包含有第一字段,所述第一字段的值用于标识产生日志的事件。在本发明的实施例中,日志文件的数据结构主要是用来规范日志文件的格式,即通过配置的数据结构生成的日志具有相同的格式。根据本发明的示例性实施例,该第一字段可以是traceID,即用traceID来标识产生日志的事件。步骤S104,在系统运行的过程中,基于所述数据结构生成日志,其中,同一事件产生的多条日志中的所述第一字段的值相同。在本发明的一些实施例中,基于上述方案,所述数据结构还包含第二字段,所述第二字段的值用于标识同一事件产生的至少一条日志的层级关系。在本发明的实施例中,由于同一事件可能触发了多个动作,而每个动作都会产生一条日志,因此通过在数据结构中设置第二字段,可以对同一事件产生的至少一条日志的层级关系进行标识。根据本发明的示例性实施例,所述第二字段包括:动作标识和层级标识;所述层级标识包括间隔排列的字符串和层级标识符,所述层级标识符的个数与日志的层级数成正相关关系。在本发明的具体实施方式中,层级标识中包含的字符串的个数可以为任意,层级标识符可以是任意字符。比如层级标识中的字符串可以是随机数字,层级标识符可以是“.”。在本发明的一些实施例中,基于上述方案,还包括:在生成任一事件对应的日志时,确定所述任一事件触发的至少一个动作;根据所述任一事件触发的至少一个动作的执行顺序,确定基于所述任一事件产生的至少一条日志的层级关系,其中,每个动作对应于一条日志;根据所述任一事件产生的至少一条日志的层级关系,在生成的日志中设置所述第二字段的值。图2示意性示出了根据本发明的一个实施例的日志文件的检索方法的流程图。参照图2,根据本发明的一个实施例的日志文件的检索方法,包括以下步骤:步骤S202,获取系统在运行过程中产生的日志,所述日志的数据结构包含有第一字段,所述第一字段的值用于标识产生日志的事件,其中,同一事件产生的多条日志中的所述第一字段的值相同。在本发明的实施例中,可以获取到系统中所有服务器产生的日志,进而可以将分散在各个系统的各个服务器中的日志进行汇总分析。步骤S204,获取日志文件的检索条件。在本发明的实施例中,可以向用户提供输入检索条件的界面,进而检测用户在该界面上的输入操作,以确定用户输入的检索条件。其中,可以根据日志文件的数据结构来确定用户可输入的检索条件,比如数据结构中有上述第一字段,则提供用户输入的检索条件中可以包括供用户输入的第一字段的值。步骤S206,基于所述检索条件,查找匹配的日志。在本发明的一些实施例中,基于上述方案,所述数据结构还包含第二字段,所述第二字段的值用于标识同一事件产生的至少一条日志的层级关系。在本发明的一些实施例中,基于上述方案,还包括:若查找到的日志中有多条日志的第一字段的值相同,则根据所述多条日志中的第二字段的值确定所述多条日志的层级关系;基于所述多条日志的层级关系,展示所述多条日志。需要说明的是,在确定上述多条日志的层级关系之后,可以直接根据这多条日志的层级关系进行展示,也可以在接收到进行展示的指令时,再展示这多条日志。在本发明的一些实施例中,基于上述方案,还包括:在获取到系统在运行过程中产生的日志之后,检查获取到的日志的格式;若获取到的任一日志的格式与所述数据结构不匹配,则丢弃所述任一日志;若获取到的任一日志的格式与所述数据结构相匹配,则存储所述任一日志。以下以上述第一字段为traceID、第二字段为span作为实施例,对本发明的技术方案进行详细说明:在本发明的实施例中,系统运行过程中产生的日志的数据结构中包括traceID和span字段。作为示例,日志的数据结构可以如表1所示:表1系统在运行过程中,服务器按照上述的数据格式来产生日志,服务器产生的日志可以保存在磁盘中。然后通过日志收集客户端,将收集到的日志发送到消息中间件中,比如发送到Kafka(一种高吞吐量的分布式发布订阅消息系统)中。日志分析处理服务器读取该消息中间件中的日志,并解析日志,将相关内容存储在数据库(如HBase)中,这样就完成了日志采集和存储工作。当需要检索日志时,通过日志查询系统,输入检索条件,即可查到所需日志。由于日志中包含有traceID,因此能够查看到具有相同traceID的日志。同时,本发明的实施例中采用traceID+span的方式来将日志分层次地串联起来。traceID为一条或多条日志的标识,若为多条日志,则表示是由一组关联的“动作”产生的日志。比如若一次完整的用户请求记录了5条日志,那么这5条日志应该具有相同的traceID。有了traceID就可以区分不同的“动作”,但并不能区分这个动作的层次关系,因此本发明的实施例中通过span来标识日志之间的层次关系。根据本发明的示例性实施例,span的结构由动作标识和层级标识组成,具体为:动作标识|x.yyy.zzz其中,动作标识为定义的一组操作原语,其用于标识产生日志的动作,在本发明的示例性实施例中,动作标识可定义如表2所示:CS客户端发送CR客户端接收SS服务端发送SR服务端接收表2表2中所示的“客户端”和“服务端”是相对的概念,即提供服务方叫“服务端”,发出请求的叫“客户端”。对于层级标识,每经过一层,即在“点”后面加上一些随机数(个数不限)。通过这种方式,就可以实现对日志的分层检索。具体流程图如图3所示,包括:步骤S302,服务器产生日志。在系统运行的过程中,按照上述的日志格式记录业务系统产生的日志。作为本发明的具体实施方式,日志可以记录在文本文件中,每条日志为一行,以/r/n回车符结尾。步骤S304,日志收集。在本发明的实施例中,可以配置日志采集客户端来收集日志。步骤S306,将收集的日志发送到消息中间件。步骤S308,判断日志格式是否正确,若是,则执行步骤S310;否则,丢弃日志。步骤S310,解析日志。在本发明的实施例中,可以通过日志处理系统拉取消息中间件的日志,解析并处理日志。其中,日志会被解析成各个字段,并且具有唯一标识(通过traceid和span标识),并存储在数据库中。步骤S312,存储至数据库。步骤S314,进行日志检索。在进行日志检索时,用户只需输入检索条件,即可查询出满足条件的日志,并且能够通过trace树来查看具有相关性的所有日志。具体地,在本发明的实施例中,如图4所示为用户输入检索条件的页面,在该页面中,用户可以通过输入各种条件来进行日志查询和日志数结构查询。当用户输入查询条件并提交之后,会呈现出如图5所示的查询结果界面;当用户查看trace树时,会呈现出图6所示的结果,进而使得用户直观地查看到日志之间的关联及层级关系。图7示意性示出了根据本发明的一个实施例的日志文件的生成装置的框图。如图7所示,根据本发明的一个实施例的日志文件的生成装置700,包括:配置单元702和生成单元704。具体地,配置单元702用于配置日志文件的数据结构,所述数据结构包含有第一字段,所述第一字段的值用于标识产生日志的事件;生成单元704用于在系统运行的过程中,基于所述数据结构生成日志,其中,同一事件产生的多条日志中的所述第一字段的值相同。根据本发明的示例性实施例,所述数据结构还包含第二字段,所述第二字段的值用于标识同一事件产生的至少一条日志的层级关系。根据本发明的示例性实施例,所述生成单元704包括:确定单元,用于在生成任一事件对应的日志时,确定所述任一事件触发的至少一个动作,根据所述任一事件触发的至少一个动作的执行顺序,确定基于所述任一事件产生的至少一条日志的层级关系,其中,每个动作对应于一条日志;设置单元,用于根据所述任一事件产生的至少一条日志的层级关系,在生成的日志中设置所述第二字段的值。根据本发明的示例性实施例,所述第二字段包括:动作标识和层级标识;所述层级标识包括间隔排列的字符串和层级标识符,所述层级标识符的个数与日志的层级数成正相关关系。图8示意性示出了根据本发明的一个实施例的日志文件的检索装置的框图。如图8所示,根据本发明的一个实施例的日志文件的检索装置800,包括:第一获取单元802、第二获取单元804和处理单元806。具体地,第一获取单元802用于获取系统在运行过程中产生的日志,所述日志的数据结构包含有第一字段,所述第一字段的值用于标识产生日志的事件,其中,同一事件产生的多条日志中的所述第一字段的值相同;第二获取单元804用于获取日志文件的检索条件;处理单元806用于基于所述检索条件,查找匹配的日志。根据本发明的示例性实施例,所述数据结构还包含第二字段,所述第二字段的值用于标识同一事件产生的至少一条日志的层级关系。根据本发明的示例性实施例,还包括:确定单元,用于在所述处理单元查找到的日志中有多条日志的第一字段的值相同时,根据所述多条日志中的第二字段的值确定所述多条日志的层级关系;展示单元,用于基于所述多条日志的层级关系,展示所述多条日志。根据本发明的示例性实施例,还包括:检查单元,用于在所述第一获取单元获取到系统在运行过程中产生的日志之后,检查获取到的日志的格式;存储单元,用于在所述检查单元确定获取到的任一日志的格式与所述数据结构不匹配时,丢弃所述任一日志,并用于在所述检查单元确定获取到的任一日志的格式与所述数据结构相匹配时,存储所述任一日志。本发明实施例的技术方案使得系统开发和维护人员可以在一个统一的界面查看线上各个服务器产生的日志,同时能够分层次的检索相关联系统的日志,降低了开发人员查问题的复杂性,使其不需要关注服务器日志收集问题,更专注于处理业务具体问题,提高了工作效率。应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1