CN114860675A - 日志生成方法、装置、设备及存储介质 - Google Patents
日志生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114860675A CN114860675A CN202210551495.1A CN202210551495A CN114860675A CN 114860675 A CN114860675 A CN 114860675A CN 202210551495 A CN202210551495 A CN 202210551495A CN 114860675 A CN114860675 A CN 114860675A
- Authority
- CN
- China
- Prior art keywords
- control
- page
- log
- operated
- logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种日志生成方法、装置、设备及存储介质。该方法包括获取被操作控件的类型;基于被操作控件的类型,获取在被操作控件的运行过程中hook有埋点逻辑的逻辑函数;当确定被操作控件调用逻辑函数时,通过埋点逻辑,获取被操作控件的操作信息,操作信息指示用户对被操作控件的操作;当被操作控件所属的应用程序的运行出现异常时,基于操作信息生成被操作控件的日志。通过hook操作实现了对被操作控件运行过程中调用的逻辑函数的自动埋点。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种日志生成方法、装置、设备及存储介质。
背景技术
随着视频类应用程序(App)的用户量、日活的日益增长,客户端面临的稳定性压力也日益凸显。这个时候就需要有一套成体系的,适用于应用程序的稳定性解决方案,能够在应用程序运行过程中快速定位应用程序的问题。
相关技术中,在每一个页面的每一个控件的实现代码里面进行逐个埋点,当用户操作应用程序时,若应用程序出现不响应等问题,可以通过埋点获得用户当时的操作路径,以方便对应用程序进行排查定位。
然而,相关技术的埋点方案不仅需要手动埋点,同时对老代码的侵入性较大。
发明内容
本申请提供了一种日志生成方法、装置、设备及存储介质,用以解决相关技术的埋点方案不仅需要手动埋点,同时对老代码的侵入性较大的问题。
第一方面,提供一种日志生成方法,包括:
获取被操作控件的类型;
基于所述被操作控件的类型,获取在所述被操作控件的运行过程中hook有埋点逻辑的逻辑函数;
当确定所述被操作控件调用所述逻辑函数时,通过所述埋点逻辑,获取所述被操作控件的操作信息,所述操作信息指示用户对所述被操作控件的操作;
当所述被操作控件所属的应用程序的运行出现异常时,基于所述操作信息生成所述被操作控件的日志。
可选地,基于所述被操作控件的类型,获取在所述被操作控件的运行过程中hook有埋点逻辑的逻辑函数,包括:
查询预先设置的操作控件的类型与逻辑函数的映射关系,获取包括所述被操作控件的类型的目标映射关系;
将所述目标映射关系中的逻辑函数,作为所述被操作控件的运行过程中hook有埋点逻辑的逻辑函数。
可选地,预先设置的操作控件的类型与逻辑函数的映射关系,包括:
当所述被操作控件的类型为按钮控件时,所述逻辑函数为所述按钮控件的执行逻辑函数,所述执行逻辑函数用于指示所述按钮控件针对所述操作的响应方式;
当所述被操作控件的类型为页面控件时,所述逻辑函数包括页面展现函数和/或页面关闭函数,所述页面展现函数用于打开所述页面控件所指示的页面,所述页面关闭函数用于关闭所述页面。
可选地,基于所述操作信息生成所述被操作控件的日志,包括:
当所述被操作控件的类型为按钮控件时,获取所述按钮控件的名称和所述按钮控件在所述应用程序中的控件路径;
生成与所述操作信息、所述按钮控件的名称和所述控件路径对应的所述日志。
可选地,获取所述按钮控件在所述应用程序中的控件路径,包括:
获取所述按钮控件在所述按钮控件所属的页面中的层级下标;以及,所述页面的页面控件,所述页面控件用于承载所述按钮控件;
基于所述层级下标,确定所述按钮控件的父控件;
获取所述父控件的名称和所述父控件在所述页面中的层级下标,依此类推,直至获取所述页面控件的名称和所述页面控件在所述页面中的层级下标;
基于所述按钮控件的层级下标和所述按钮控件的名称,生成与所述按钮控件对应的叶子节点;基于所述父控件的名称和层级下标,生成所述叶子节点的父节点;依此类推,直至基于所述页面控件的名称和所述页面控件的层级下标,生成与所述页面控件对应的根节点;
生成与所述叶子节点、所述父节点和所述根节点对应的所述控件路径。
可选地,当确定所述被操作控件调用所述逻辑函数时,通过所述埋点逻辑,获取所述被操作控件的操作信息,包括:
当确定所述被操作控件调用所述逻辑函数时,跳转执行所述埋点逻辑,以通过所述埋点逻辑获取所述操作的操作信息;
当确定所述埋点逻辑执行完毕后,保存所述操作信息,并返回执行所述逻辑函数。
可选地,所述被操作控件的类型包括页面控件;
基于所述操作信息生成所述被操作控件的日志之后,还包括:
对于与所述页面控件相关的任意一条日志,
获取所述任意一条日志的上一条日志,所述上一条日志为所述日志生成之前最近一次生成的日志;
提取所述上一条日志中的控件名称;
将所述控件名称所指示的页面内容,作为所述页面控件所指示的页面内容。
第二方面,提供一种日志生成装置,包括:
第一获取单元,用于获取被操作控件的类型;
第二获取单元,用于基于所述被操作控件的类型,获取在所述被操作控件的运行过程中hook有埋点逻辑的逻辑函数;
第三获取单元,用于当确定所述被操作控件调用所述逻辑函数时,通过所述埋点逻辑,获取所述被操作控件的操作信息,所述操作信息指示用户对所述被操作控件的操作;
生成单元,用于当所述被操作控件所属的应用程序的运行出现异常时,基于所述操作信息生成所述被操作控件的日志。
第三方面,提供一种电子设备,包括:处理器、存储器和通信总线,其中,处理器和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现第一方面所述的日志生成方法。
第四方面,提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的日志生成方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的该方法,获取被操作控件的类型;基于被操作控件的类型,获取在被操作控件的运行过程中hook有埋点逻辑的逻辑函数;当确定被操作控件调用埋点逻辑时,通过逻辑函数hook的埋点逻辑,获取被操作控件的操作信息,操作信息指示用户对被操作控件的操作;当被操作控件所属的应用程序的运行出现异常时,基于操作信息生成被操作控件的日志。通过hook操作实现了对被操作控件运行过程中调用的逻辑函数的自动埋点。同时,由于是以被操作控件的类型区分不同的被操作控件的逻辑函数所hook的埋点逻辑,所以对于属于同一类型的被操作控件,可以在基于类/对象的方式生成被操作控件时,将埋点逻辑设置为类的一个属性,从而使得基于该类生成被操作控件时,实现自动对被操作控件的埋点,相比于手动逐一对每个被操作控件进行手动埋点,降低了对现有应用程序的代码的侵入性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中日志生成方法的流程示意图;
图2为正常程序的执行流程示意图;
图3为被hook后的执行流程示意图;
图4为本申请实施例中日志生成装置的结构示意图;
图5为本申请实施例中日志生成系统的结构示意图;
图6为本申请实施例中电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例提供一种日志生成方法,该方法可应用于电子设备中;
本实施例中的电子设备可以包括终端或者服务器,本申请实施例不做限定。终端包括各种具有无线通信功能的手持设备、计算设、用户设备(User Equipment,简称UE),移动台(Mobile Station,简称MS),终端设备(terminal device)等等。为方便描述,上面提到的设备统称为电子设备。
应用中,对电子设备的操作系统所支持的逻辑函数进行埋点逻辑的hook操作时,由于hook操作仅支持Objective-C语言所编写的埋点逻辑,所以本申请实施例所适用的电子设备的操作系统至少为支持Objective-C语言的ios系统。
如图1所示,该方法可以包括以下步骤:
步骤101、获取被操作控件的类型。
本实施例中,被操作控件的类型包括但不限于页面控件和/或按钮控件。应理解,控件的属性中包括控件的类型等参数,因此可以通过查询被操作控件的属性,以获取被操作控件的类型。
步骤102、基于被操作控件的类型,获取在被操作控件的运行过程中hook有埋点逻辑的逻辑函数。
本实施例中,可以在被操作控件所属的应用程序的生产阶段,预先对被操作控件调用的逻辑函数进行hook操作,从而实现当被操作控件调用逻辑函数时,基于逻辑函数hook的埋点逻辑,获取被操作控件的操作信息。
应用中,由于不同类型的被操作控件被操作时,所调用的逻辑函数不同,因此本实施例在被操作控件所属的应用程序的生产阶段,基于被操作控件的类型,确定被操作控件hook有埋点逻辑的逻辑函数。
本实施例中,预先设置有操作控件的类型和逻辑函数的映射关系,因此可以通过查询该映射关系,确定被操作控件的运行过程中被hook的逻辑函数。
一个可选实施例中,查询预先设置的操作控件的类型与逻辑函数的映射关系,获取包括被操作控件的类型的目标映射关系;将目标映射关系中的逻辑函数,作为被操作控件的运行过程中hook有埋点逻辑的逻辑函数。
一个可选实施例中,当操作控件的类型包括按钮控件和页面控件时,预先设置的操作控件的类型和逻辑函数的映射关系可以为:
当被操作控件的类型为按钮控件时,逻辑函数为按钮控件的执行逻辑函数,执行逻辑函数用于指示按钮控件针对操作的响应方式;当被操作控件的类型为页面控件时,逻辑函数包括页面展现函数和/或页面关闭函数,页面展现函数用于打开页面控件所指示的页面,页面关闭函数用于关闭页面。
应用中,以按钮控件为例,当用户点击按钮控件时,按钮控件调用电子设备的操作系统提供的addtargte方法,以获悉针对用户的点击操作的响应方式,对于此类按钮控件确定addtargte方法为按钮控件被hook的逻辑函数。而对于页面控件,当用户操作打开页面时,页面控件调用电子设备的操作系统提供的viewDidAppear方法展示页面;当用户操作关闭页面时,页面控件调用单子设备的操作系统提供的viewWillDisappear方法关闭页面,因此对于此类页面控件确定viewDidAppear方法和viewWillDisappear方法为页面控件被hook的逻辑函数。
步骤103、当确定被操作控件调用逻辑函数时,通过埋点逻辑,获取被操作控件的操作信息,操作信息指示用户对被操作控件的操作。
本实施例中,埋点逻辑指的是采用程序编程语言所编写的携带特殊信息的逻辑代码。应理解,当运行逻辑代码时,可以获取用户对被操作控件的操作信息。
本实施例中,被操作控件的操作信息包括但不限于用户对被操作控件的点击操作、双击操作、滑动操作、打开操作、关闭操作等。
为了方便理解,以下对本实施例中涉及的hook操作进行介绍。
请参照图2及图3,其中,图2为正常程序的执行流程示意图,图3为fun2被hook后的执行流程示意图。
当按照图2的流程执行时,先执行fun1的程序,再执行fun2的程序,因此最终输出的结果为fun1、fun2;当按照图3的流程执行时,先执行fun1的程序,待fun1的程序执行完毕,跳转到fun2的程序的入口时,跳转(jmp)到myfun的程序并执行myfun的程序,待myfun的程序执行完毕后,跳回到fun2的程序,并继续执行fun2的程序,因此图3的最终输出结果为fun1、myfun、fun2。
基于上述hook操作的实现原理,对应到本实施例中,获取被操作控件的操作信息的流程如下所示:
当确定被操作控件调用逻辑函数时,跳转执行埋点逻辑,以通过埋点逻辑获取操作的操作信息;当确定埋点逻辑执行完毕后,保存操作信息,并返回执行逻辑函数。
步骤104、当被操作控件所属的应用程序的运行出现异常时,基于操作信息生成被操作控件的日志。
应用中,生成被操作控件的日志时,采用被操作控件的标题(title)或名称标识被操作控件,然而,由于一个应用程序中通常具有非常多的控件,不同的控件的标题可能是相同的,比如当按钮控件的标题为“确定”时,应用程序的日志中会有非常多的叫“确定”的按钮的点击日志,在这种情况下,没办法区分哪条日志对应哪个位置的按钮,为了避免这种情况的出现,本实施例以被操作控件的标题和控件路径标识被操作控件,由于不同的控件的控件路径是唯一确定的,所以引入控件路径之后,可以唯一标识被操作控件。
一个可选实施例中,以被操作控件的类型为按钮控件为例,获取按钮控件的名称和按钮控件在应用程序中的控件路径;生成与操作信息、按钮控件的名称和控件路径对应的日志。
应理解,按钮控件的名称为控件本身所具有的属性,因此可以从按钮控件的属性中获取按钮控件的名称。
对于按钮控件的控件路径,可以确定该按钮控件所在页面的页面控件,并基于该按钮控件在当前页面所处的层级确定该按钮控件的上一层控件,依此递推,直至找到页面控件,从而依据按钮控件、上一层控件…页面控件等生成控件路径。
具体实现时,一个可选实施例中,获取按钮控件在按钮控件所属的页面中的层级下标;以及,页面的页面控件,页面控件用于承载按钮控件;基于层级下标,确定按钮控件的父控件;获取父控件的名称和父控件在页面中的层级下标,依此类推,直至获取页面控件的名称和页面控件在页面中的层级下标;基于按钮控件的层级下标和按钮控件的名称,生成与按钮控件对应的叶子节点;基于父控件的名称和层级下标,生成叶子节点的父节点;依此类推,直至基于页面控件的名称和页面控件的层级下标,生成与页面控件对应的根节点;生成与叶子节点、父节点和根节点对应的控件路径。
应用中,对于一个应用程序的某一个页面,通常该页面会包括多个按钮控件,这些按钮控件以层层叠加的方式承载于页面的页面控件中,即不同的按钮控件一层一层叠加起来形成了页面。按钮控件的层级下标指示按钮控件所属的层数,即按钮控件位于第几层。而对于任意一个按钮控件,该按钮控件的下层控件为该按钮控件的父控件。该页面中最下层的控件则为页面控件,用于承载层层的按钮控件。
应用中,按钮控件所属的页面控件可以包括UIWindow或者UIViewController。在确定某一按钮控件所属的页面控件时,同样可以通过查找该按钮控件的属性实现。
应理解,当被操作控件的类型为页面控件时,也可以以页面控件的名称和控件路径唯一标识该页面控件。实际应用中,考虑到通过日志的上下文也能唯一确定页面控件,为了减少数据处理量,对于页面控件也可以不获取其控件路径,也能实现唯一确定该日志所指代的页面控件。
具体实现时,一个可选实施例中,对于与页面控件相关的任意一条日志,获取任意一条日志的上一条日志,上一条日志为日志生成之前最近一次生成的日志;提取上一条日志中的控件名称;将控件名称所指示的页面内容,作为页面控件所指示的页面内容。
一个例子中,用户操作外卖APP,点击首页面中的“外卖”按钮,然后进入外卖页面,然后点击外卖页面上的“水果”按钮,从日志上就表现为:
1、[App启动]
2、[按钮点击-Name为“外卖”]
3、[页面展示]
4、[控件点击-Name为“水果”]
在这个例子中,第三条日志为页面控件的日志,虽然从这条日志上难以看出该条日志对应哪个页面,但是结合该日志的上下文,可以发现,该日志对应的是“外卖”页面。
本申请实施例提供的技术方案中,获取被操作控件的类型;基于被操作控件的类型,获取在被操作控件的运行过程中hook有埋点逻辑的逻辑函数;当确定被操作控件调用埋点逻辑时,通过逻辑函数hook的埋点逻辑,获取被操作控件的操作信息,操作信息指示用户对被操作控件的操作;当被操作控件所属的应用程序的运行出现异常时,基于操作信息生成被操作控件的日志。通过hook操作实现了对被操作控件运行过程中调用的逻辑函数的自动埋点。同时,由于是以被操作控件的类型区分不同的被操作控件的逻辑函数所hook的埋点逻辑,所以对于属于同一类型的被操作控件,可以在基于类/对象的方式生成被操作控件时,将埋点逻辑设置为类的一个属性,从而使得基于该类生成被操作控件时,实现自动对被操作控件的埋点,相比于手动逐一对每个被操作控件进行手动埋点,降低了对现有应用程序的代码的侵入性。
基于同一构思,本申请实施例中提供了一种日志生成装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图4所示,该装置主要包括:
第一获取单元401,用于获取被操作控件的类型;
第二获取单元402,用于基于被操作控件的类型,获取在被操作控件的运行过程中hook有埋点逻辑的逻辑函数;
第三获取单元403,用于当确定被操作控件调用逻辑函数时,通过埋点逻辑,获取被操作控件的操作信息,操作信息指示用户对被操作控件的操作;
生成单元404,用于当被操作控件所属的应用程序的运行出现异常时,基于操作信息生成被操作控件的日志。
可选地,第二获取单元402用于:
查询预先设置的操作控件的类型与逻辑函数的映射关系,获取包括被操作控件的类型的目标映射关系;
将目标映射关系中的逻辑函数,作为被操作控件的运行过程中hook有埋点逻辑的逻辑函数。
可选地,预先设置的操作控件的类型与逻辑函数的映射关系,包括:
当被操作控件的类型为按钮控件时,逻辑函数为按钮控件的执行逻辑函数,执行逻辑函数用于指示按钮控件针对操作的响应方式;
当被操作控件的类型为页面控件时,逻辑函数包括页面展现函数和/或页面关闭函数,页面展现函数用于打开页面控件所指示的页面,页面关闭函数用于关闭页面。
可选地,生成单元404用于:
当被操作控件的类型为按钮控件时,获取按钮控件的名称和按钮控件在应用程序中的控件路径;
生成与操作信息、按钮控件的名称和控件路径对应的日志。
可选地,生成单元404用于:
获取按钮控件在按钮控件所属的页面中的层级下标;以及,页面的页面控件,页面控件用于承载按钮控件;
基于层级下标,确定按钮控件的父控件;
获取父控件的名称和父控件在页面中的层级下标,依此类推,直至获取页面控件的名称和页面控件在页面中的层级下标;
基于按钮控件的层级下标和按钮控件的名称,生成与按钮控件对应的叶子节点;基于父控件的名称和层级下标,生成叶子节点的父节点;依此类推,直至基于页面控件的名称和页面控件的层级下标,生成与页面控件对应的根节点;
生成与叶子节点、父节点和根节点对应的控件路径。
可选地,第三获取单元403用于:
当确定被操作控件调用逻辑函数时,跳转执行埋点逻辑,以通过埋点逻辑获取操作的操作信息;
当确定埋点逻辑执行完毕后,保存操作信息,并返回执行逻辑函数。
被操作控件的类型包括页面控件;
该装置还用于:
基于操作信息生成被操作控件的日志之后,对于与页面控件相关的任意一条日志,获取所述任意一条日志的上一条日志,所述上一条日志为所述日志生成之前最近一次生成的日志;提取所述上一条日志中的控件名称;将所述控件名称所指示的页面内容,作为所述页面控件所指示的页面内容。
基于同一构思,本申请实施例中提供了一种日志生成系统,如图5所示,该系统主要包括:
输入单元501,用于检测并接收用户的操作。
埋点单元502,用于设置埋点逻辑,并建立埋点逻辑与操作控件的类型的映射关系;基于埋点逻辑捕获用户的操作。
一个例子中,埋点单元502中的埋点逻辑可以为UIControl Hooker、UITapGestureRecognizer Hooker以及UIViewController Hooker这三种函数。
其中UIControl Hooker和UITapGestureRecognizer Hooker适应于按钮控件;UIViewController Hooker适应于页面控件。
输出单元503,用于基于捕获的用户的操作生成日志,并输出日志。
基于同一构思,本申请实施例中还提供了一种电子设备,如图6所示,该电子设备主要包括:处理器601、存储器602和通信总线603,其中,处理器601和存储器602通过通信总线603完成相互间的通信。其中,存储器602中存储有可被处理器601执行的程序,处理器601执行存储器602中存储的程序,实现如下步骤:
获取被操作控件的类型;基于被操作控件的类型,获取在被操作控件的运行过程中hook有埋点逻辑的逻辑函数;当确定被操作控件调用逻辑函数时,通过埋点逻辑,获取被操作控件的操作信息,操作信息指示用户对被操作控件的操作;当被操作控件所属的应用程序的运行出现异常时,基于操作信息生成被操作控件的日志。
上述电子设备中提到的通信总线603可以是外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线603可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器602可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器601的存储装置。
上述的处理器601可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等,还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述实施例中所描述的日志生成方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。该计算机可以时通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、微波等)方式向另外一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如DVD)或者半导体介质(例如固态硬盘)等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种日志生成方法,其特征在于,包括:
获取被操作控件的类型;
基于所述被操作控件的类型,获取在所述被操作控件的运行过程中hook有埋点逻辑的逻辑函数;
当确定所述被操作控件调用所述逻辑函数时,通过所述埋点逻辑,获取所述被操作控件的操作信息,所述操作信息指示用户对所述被操作控件的操作;
当所述被操作控件所属的应用程序的运行出现异常时,基于所述操作信息生成所述被操作控件的日志。
2.根据权利要求1所述的方法,其特征在于,基于所述被操作控件的类型,获取在所述被操作控件的运行过程中hook有埋点逻辑的逻辑函数,包括:
查询预先设置的操作控件的类型与逻辑函数的映射关系,获取包括所述被操作控件的类型的目标映射关系;
将所述目标映射关系中的逻辑函数,作为所述被操作控件的运行过程中hook有埋点逻辑的逻辑函数。
3.根据权利要求2所述的方法,其特征在于,预先设置的操作控件的类型与逻辑函数的映射关系,包括:
当所述被操作控件的类型为按钮控件时,所述逻辑函数为所述按钮控件的执行逻辑函数,所述执行逻辑函数用于指示所述按钮控件针对所述操作的响应方式;
当所述被操作控件的类型为页面控件时,所述逻辑函数包括页面展现函数和/或页面关闭函数,所述页面展现函数用于打开所述页面控件所指示的页面,所述页面关闭函数用于关闭所述页面。
4.根据权利要求1所述的方法,其特征在于,基于所述操作信息生成所述被操作控件的日志,包括:
当所述被操作控件的类型为按钮控件时,获取所述按钮控件的名称和所述按钮控件在所述应用程序中的控件路径;
生成与所述操作信息、所述按钮控件的名称和所述控件路径对应的所述日志。
5.根据权利要求4所述的方法,其特征在于,获取所述按钮控件在所述应用程序中的控件路径,包括:
获取所述按钮控件在所述按钮控件所属的页面中的层级下标;以及,所述页面的页面控件,所述页面控件用于承载所述按钮控件;
基于所述层级下标,确定所述按钮控件的父控件;
获取所述父控件的名称和所述父控件在所述页面中的层级下标,依此类推,直至获取所述页面控件的名称和所述页面控件在所述页面中的层级下标;
基于所述按钮控件的层级下标和所述按钮控件的名称,生成与所述按钮控件对应的叶子节点;基于所述父控件的名称和层级下标,生成所述叶子节点的父节点;依此类推,直至基于所述页面控件的名称和所述页面控件的层级下标,生成与所述页面控件对应的根节点;
生成与所述叶子节点、所述父节点和所述根节点对应的所述控件路径。
6.根据权利要求1所述的方法,其特征在于,当确定所述被操作控件调用所述逻辑函数时,通过所述埋点逻辑,获取所述被操作控件的操作信息,包括:
当确定所述被操作控件调用所述逻辑函数时,跳转执行所述埋点逻辑,以通过所述埋点逻辑获取所述操作的操作信息;
当确定所述埋点逻辑执行完毕后,保存所述操作信息,并返回执行所述逻辑函数。
7.根据权利要求1所述的方法,其特征在于,所述被操作控件的类型包括页面控件;
基于所述操作信息生成所述被操作控件的日志之后,还包括:
对于与所述页面控件相关的任意一条日志,获取所述任意一条日志的上一条日志,所述上一条日志为所述日志生成之前最近一次生成的日志;
提取所述上一条日志中的控件名称;
将所述控件名称所指示的页面内容,作为所述页面控件所指示的页面内容。
8.一种日志生成装置,其特征在于,包括:
第一获取单元,用于获取被操作控件的类型;
第二获取单元,用于基于所述被操作控件的类型,获取在所述被操作控件的运行过程中hook有埋点逻辑的逻辑函数;
第三获取单元,用于当确定所述被操作控件调用所述埋点逻辑时,通过所述逻辑函数hook的埋点逻辑,获取所述被操作控件的操作信息,所述操作信息指示用户对所述被操作控件的操作;
生成单元,用于当所述被操作控件所属的应用程序的运行出现异常时,基于所述操作信息生成所述被操作控件的日志。
9.一种电子设备,其特征在于,包括:处理器、存储器和通信总线,其中,处理器和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现权利要求1-7任一项所述的日志生成方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的日志生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210551495.1A CN114860675A (zh) | 2022-05-18 | 2022-05-18 | 日志生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210551495.1A CN114860675A (zh) | 2022-05-18 | 2022-05-18 | 日志生成方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114860675A true CN114860675A (zh) | 2022-08-05 |
Family
ID=82638513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210551495.1A Pending CN114860675A (zh) | 2022-05-18 | 2022-05-18 | 日志生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114860675A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115883647A (zh) * | 2022-11-29 | 2023-03-31 | 京东科技信息技术有限公司 | 业务日志记录方法、系统、装置、终端、服务器及介质 |
-
2022
- 2022-05-18 CN CN202210551495.1A patent/CN114860675A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115883647A (zh) * | 2022-11-29 | 2023-03-31 | 京东科技信息技术有限公司 | 业务日志记录方法、系统、装置、终端、服务器及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108322351B (zh) | 生成拓扑图的方法和装置、故障确定方法和装置 | |
CN104615700A (zh) | 浏览器中收藏网页对象的方法、浏览器客户端和系统 | |
CN109241026A (zh) | 数据管理的方法、装置及系统 | |
CN105512294A (zh) | 一种多媒体文件的更新提示方法和装置 | |
CN111124480A (zh) | 应用程序包的生成方法、装置、电子设备及存储介质 | |
CN108900547B (zh) | 回源控制方法及装置 | |
CN110888756A (zh) | 一种诊断日志生成方法及装置 | |
CN114860675A (zh) | 日志生成方法、装置、设备及存储介质 | |
CN110825600B (zh) | 一种页面信息处理方法、服务器和页面展示装置 | |
US11971988B2 (en) | Detection of suspicious objects in customer premises equipment (CPE) | |
CN113760617B (zh) | 故障处理方法及装置、设备、存储介质 | |
CN112988776B (zh) | 文本解析规则的更新方法、装置、设备及可读存储介质 | |
CN110928946A (zh) | 一种文档编辑方法、装置及终端设备 | |
CN111309264B (zh) | 一种使目录配额兼容快照的方法、系统、设备及介质 | |
CN113704281A (zh) | 一种数据格式转换方法、装置、存储介质和电子设备 | |
CN104462210A (zh) | 一种音频文件的提示方法和设备 | |
CN108133123B (zh) | 一种应用程序的识别方法及系统 | |
CN109976828B (zh) | 一种配置文件的方法及装置 | |
CN108037914B (zh) | 一种安卓原生系统结合js开发的方法及装置 | |
CN110704041A (zh) | 软件开发方法及装置 | |
CN115934523A (zh) | 目标测试数据的生成方法、装置、存储介质及电子装置 | |
CN114416641A (zh) | 文件数据的处理方法、装置、电子设备及存储介质 | |
CN109274808B (zh) | 通讯录信息管理方法、系统及电子设备和存储介质 | |
CN112416442A (zh) | 一种设备流程控制方法、设备及介质 | |
CN112540820A (zh) | 一种用户界面的更新方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |