CN115510035A - 日志数据处理方法、装置、设备及存储介质 - Google Patents

日志数据处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115510035A
CN115510035A CN202211249358.9A CN202211249358A CN115510035A CN 115510035 A CN115510035 A CN 115510035A CN 202211249358 A CN202211249358 A CN 202211249358A CN 115510035 A CN115510035 A CN 115510035A
Authority
CN
China
Prior art keywords
log
log data
data
reported
page
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
Application number
CN202211249358.9A
Other languages
English (en)
Inventor
尼见
钟奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Youdao Information Technology Beijing Co Ltd
Original Assignee
Netease Youdao Information Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Youdao Information Technology Beijing Co Ltd filed Critical Netease Youdao Information Technology Beijing Co Ltd
Priority to CN202211249358.9A priority Critical patent/CN115510035A/zh
Publication of CN115510035A publication Critical patent/CN115510035A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例公开了一种日志数据处理方法、装置、设备及存储介质,其中,所述方法包括:在应用程序运行过程中,监听所述应用程序对应的运行事件,并基于所述运行事件生成对应的运行日志数据;获取所述运行日志数据对应的日志标识;所述日志标识用于在所述应用程序中确定所述运行日志数据对应的程序对象;将所述运行日志数据和所述日志运行数据对应的日志标识存储至第一数据库;响应于第一日志上报事件,从所述第一数据库存储的运行日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求。

Description

日志数据处理方法、装置、设备及存储介质
技术领域
本申请涉及但不限于数据处理技术领域,尤其涉及一种日志数据处理方法、装置、设备及存储介质。
背景技术
在应用程序开发的过程中,需要开发工程师手动去发送相关的日志到服务器端,例如页面的展示、按钮的点击等,然后服务端接收这些数据之后存储到数据库供产品工程师查看相应的数据。可以看出,传统技术中日志数据的收集效率交低,且产品工程师需要查看和分析的数据众多,难以快速找到需要的日志数据。
发明内容
有鉴于此,本申请实施例至少提供一种日志数据处理方法、装置、设备、存储介质。
本申请实施例的技术方案是这样实现的:
一方面,本申请实施例提供一种日志数据处理方法,所述方法包括:
在应用程序运行过程中,监听所述应用程序对应的运行事件,并基于所述运行事件生成对应的运行日志数据;
获取所述运行日志数据对应的日志标识;所述日志标识用于在所述应用程序中确定所述运行日志数据对应的程序对象;
将所述运行日志数据和所述日志运行数据对应的日志标识存储至第一数据库;
响应于第一日志上报事件,从所述第一数据库存储的运行日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求。
在一些实施例中,所述运行事件包括页面浏览事件;所述获取所述运行日志数据对应的日志标识,包括:
获取所述页面浏览事件对应的当前页面的页面标识;所述页面标识包括以下至少之一:所述当前页面的页面代码标识和所述当前页面的页面语义标识;
将所述页面标识作为所述运行日志数据对应的日志标识。
在一些实施例中,所述运行事件包括控件触发事件;所述获取所述运行日志数据对应的日志标识,包括:
获取所述控件触发事件对应的当前页面的页面标识和已触发控件的控件标识;所述页面标识包括以下至少之一:所述当前页面的页面代码标识和所述当前页面的页面语义标识,所述控件标识包括以下至少之一:所述已触发控件的控件代码标识和所述已触发控件的控件语义标识;
将所述页面标识和所述控件标识作为所述运行日志数据对应的日志标识。
在一些实施例中,所述将所述运行日志数据和所述日志运行数据对应的日志标识存储至第一数据库,包括:
将所述运行日志数据和所述日志运行数据对应的日志标识存储至所述第一数据库;
响应于所述运行日志数据对应的存储事件,基于历史存储信息确定当前存储信息;
在所述当前存储信息满足预设上报条件的情况下,生成所述第一日志上报事件。
在一些实施例中,所述第一数据库包括多个所述运行日志数据;所述从所述第一数据库存储的运行日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求,包括:
获取每一所述运行日志数据对应的日志时间;
按照日志时间从早到晚的顺序对多个所述运行日志数据进行排序,将排序靠前的预设上报数量个运行日志数据作为所述待上报日志数据;
向服务器发送携带所述预设上报数量个待上报日志数据和每一所述待上报日志数据对应的日志标识的第一日志上报请求。
在一些实施例中,所述方法还包括:
获取所述待上报日志数据对应的上报结果;
在所述上报结果表征所述待上报日志数据上报失败的情况下,将所述待上报日志数据存储至第二数据库。
在一些实施例中,所述从所述第一数据库存储的运行日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求,包括:
从所述第一数据库存储的运行日志数据和所述第二数据库存储的失败日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求。
在一些实施例中,所述第一数据库包括多个所述运行日志数据;所述第二数据库包括多个所述失败日志数据;所述从所述第一数据库存储的运行日志数据和所述第二数据库存储的失败日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求,包括:
获取每一所述运行日志数据对应的日志时间和每一所述失败日志数据对应的日志时间;
按照日志时间从早到晚的顺序对多个所述运行日志数据和多个所述失败日志数据进行排序,将排序靠前的预设上报数量个日志数据作为所述待上报日志数据;
向服务器发送携带所述预设上报数量个待上报日志数据和每一所述待上报日志数据对应的日志标识的第一日志上报请求。
在一些实施例中,所述方法还包括:
监听所述应用程序对应的崩溃事件,并基于所述崩溃事件生成对应的崩溃日志数据,并存储至预设路径;
响应于第二日志上报事件,从所述预设路径获取所述崩溃日志数据,并向服务器发送携带所述崩溃日志数据的第二日志上报请求。
在一些实施例中,所述方法还包括:
获取所述应用程序的主线程状态;
在所述主线程状态为空闲状态的情况下,生成所述第二日志上报事件。
在一些实施例中,所述运行事件包括以下至少之一:页面浏览事件、控件触发事件;所述监听所述应用程序对应的运行事件,并基于所述运行事件生成对应的运行日志数据,包括:
在所述运行事件包括所述页面浏览事件的情况下,监听活动生命周期回调接口的事件回调,捕获当前页面的页面浏览事件;基于所述页面浏览事件,确定页面浏览数据;所述运行日志数据包括所述页面浏览数据;
在所述运行事件包括所述控件触发事件的情况下,监听控件触发接口的事件回调,捕获当前页面的控件触发事件;基于所述控件触发事件,确定控件触发数据;所述运行日志数据包括所述控件触发数据。
在一些实施例中,所述方法包括:
响应于日志分析事件,获取日志分析任务需要解析的日志运行数据对应的待查询日志标识;
基于所述待查询日志标识在所述第一数据库中查询与所述待查询日志标识匹配的日志运行数据,作为待分析日志数据;
基于所述待分析日志数据生成所述日志分析任务对应的日志分析结果。
另一方面,本申请实施例提供一种日志数据处理方法,所述方法包括:
接收终端设备响应于第一日志上报事件发送的第一日志上报请求;所述第一日志上报请求携带待上报日志数据和所述待上报日志数据对应的日志标识;
将所述待上报日志数据和所述待上报日志数据对应的日志标识存储至第三数据库中;所述第三数据库包括已上报日志数据和所述已上报数据对应的日志标识;
响应于日志查询设备发送的携带目标日志标识的日志查询请求,基于所述目标日志标识在所述第三数据库中查询与所述目标日志标识匹配的已上报日志数据,作为目标日志数据;
向所述日志查询设备发送携带所述目标日志数据的日志查询结果。
在一些实施例中,所述日志查询请求为页面浏览查询请求,所述目标日志标识包括目标页面标识,所述第三数据库包括多个所述已上报日志数据;所述基于所述目标日志标识在所述第三数据库中查询与所述目标日志标识匹配的已上报日志数据,作为目标日志数据,包括:
在所述第三数据库中,获取多个所述已上报日志数据中每一所述已上报日志数据对应的页面标识;
基于每一所述已上报日志数据对应的页面标识,将与所述目标页面标识匹配的已上报日志数据作为所述目标日志数据;
其中,所述页面标识包括以下至少之一:页面代码标识和页面语义标识。
在一些实施例中,所述日志查询请求为控件触发查询请求,所述目标日志标识包括目标页面标识和目标控件标识,第三数据库包括多个所述已上报日志数据;所述基于所述目标日志标识在所述第三数据库中查询与所述目标日志标识匹配的已上报日志数据,作为目标日志数据,包括:
在所述第三数据库中,获取多个所述已上报日志数据中每一所述已上报日志数据对应的页面标识和控件标识;
基于每一所述已上报日志数据对应的页面标识和控件标识,将与所述目标页面标识和所述目标控件标识匹配的已上报日志数据作为所述目标日志数据;
其中,所述页面标识包括以下至少之一:页面代码标识和页面语义标识,所述控件标识包括以下至少之一:控件代码标识和控件语义标识。
在一些实施例中,所述方法还包括:
接收所述终端设备发送的第二日志上报请求;所述第一日志上报请求携带所述应用程序的待崩溃日志数据;
将所述待崩溃日志数据存储至第四数据库中。
再一方面,本申请实施例提供一种日志数据处理装置,所述装置包括:
监听模块,用于在应用程序运行过程中,监听所述应用程序对应的运行事件,并基于所述运行事件生成对应的运行日志数据;
获取模块,用于获取所述运行日志数据对应的日志标识;所述日志标识用于在所述应用程序中确定所述运行日志数据对应的程序对象;
第一存储模块,用于将所述运行日志数据和所述日志运行数据对应的日志标识存储至第一数据库;
上报模块,用于响应于第一日志上报事件,从所述第一数据库存储的运行日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求。
又一方面,本申请实施例提供一种日志数据处理装置,所述装置包括:
接收模块,用于接收终端设备响应于第一日志上报事件发送的第一日志上报请求;所述第一日志上报请求携带待上报日志数据和所述待上报日志数据对应的日志标识;
第二存储模块,用于将所述待上报日志数据和所述待上报日志数据对应的日志标识存储至第三数据库中;所述第三数据库包括已上报日志数据和所述已上报数据对应的日志标识;
查询模块,用于响应于日志查询设备发送的携带目标日志标识的日志查询请求,基于所述目标日志标识在所述第三数据库中查询与所述目标日志标识匹配的已上报日志数据,作为目标日志数据;
发送模块,用于向所述日志查询设备发送携带所述目标日志数据的日志查询结果。
又一方面,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
又一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。
本申请实施例中,通过监听应用程序运行过程中产生的运行事件,自动生成对应的运行日志数据,相比于传统技术中开发人员手动收集日志数据的方式,可以提升日志数据的收集效率。同时,在收集运行日志数据之后,采用异步上报的方式,先存储至第一数据库,再响应于第一日志上报事件,批量上报运行日志数据,这样,可以减少日志上报过程中对服务器的访问次数,提升数据上报效率;同时,由于存储并上报了每一运行日志数据对应的日志标识,这样可以提升数据查找效率,便于后续的日志数据分析过程。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请的技术方案。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1为本申请实施例提供的一种日志数据处理方法的实现流程示意图;
图2为本申请实施例提供的一种日志数据处理方法的实现流程示意图;
图3为本申请实施例提供的一种日志数据处理方法的实现流程示意图;
图4为本申请实施例提供的一种日志数据处理方法的实现流程示意图;
图5为本申请实施例提供的一种日志数据处理方法的实现流程示意图;
图6为本申请实施例提供的一种日志数据处理方法的实现流程示意图;
图7为本申请实施例提供的一种日志数据处理方法的实现流程示意图;
图8为本申请实施例提供的一种日志数据处理方法的实现流程示意图;
图9为本申请实施例提供的一种日志数据处理方法的实现流程示意图;
图10为本申请实施例提供的一种日志数据处理方法的实现流程示意图;
图11为本申请实施例提供的一种日志数据处理装置的组成结构示意图;
图12A为本申请实施例提供的一种页面浏览事件收集方法的流程示意图;
图12B为本申请实施例提供的一种页面控件点击事件收集方法的流程示意图;
图12C为本申请实施例提供的一种崩溃日志事件收集方法的流程示意图;
图12D为本申请实施例提供的一种日志存储方法的流程示意图;
图12E为本申请实施例提供的一种崩溃日志存储方法的流程示意图;
图12F为本申请实施例提供的一种运行日志上报方法的流程示意图;
图12G为本申请实施例提供的一种日志数据分析方法的流程示意图;
图13为本申请实施例提供的一种日志数据处理装置的组成结构示意图;
图14为本申请实施例提供的一种日志数据处理装置的组成结构示意图;
图15为本申请实施例提供的一种计算机设备的硬件实体示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请的目的,不是旨在限制本申请。
本申请实施例提供一种日志数据处理方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、移动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。图1为本申请实施例提供的一种日志数据处理方法的实现流程示意图,如图1所示,该方法包括如下步骤S101至步骤S103:
步骤S101、在应用程序运行过程中,监听所述应用程序对应的运行事件,并基于所述运行事件生成对应的运行日志数据。
在一些实施例中,可以通过监听预设的事件监听接口的运行事件回调,捕获应用程序运行过程中产生的各种运行事件,并基于捕获的运行事件,生成对应运行日志数据。上述应用程序可以为各种操作系统下的应用程序,包括不限于是视窗(Windows)系统、安卓系统或iOS系统。为了更加清楚的说明本申请实施例中的日志数据处理方法,以下实施例将以安卓系统中的日志数据处理方法为例进行说明,并非限制本申请的应用环境。
步骤S102、获取所述运行日志数据对应的日志标识;所述日志标识用于在所述应用程序中确定所述运行日志数据对应的程序对象。
其中,该程序对象为所述运行日志数据中记录的事件发送主体。在一些实施例中,该程序对象可以为页面对象,相应的,该页面对象对应的运行日志数据可以用于描述该页面对象的创建时间、关闭时间、操作用户等。在另一些实施例中,该程序对象可以为控件对象,相应的,该控件对象对应的运行日志数据可以用于描述该控件对象的触发时间、触发类型、操作用户等。在另一些实施例中,该程序对象可以为素材对象,相应的,该素材对象对应的运行日志数据可以用于描述该素材对象的调用时间、调用对象等。
在一些实施例中,上述运行日志数据对应的日志标识为所述运行日志数据对应的程序对象的唯一标识。其中,该日志标识可以为代码维度的标识、也可以是语义维度的标识、还可以是基于预设编码规则为该程序对象生成的唯一标识。本申请对此不做限定。
步骤S103、将所述运行日志数据和所述日志运行数据对应的日志标识存储至第一数据库。
其中,为了减少日志上报过程中对服务器的访问次数,提升数据上报效率,可以先将运行日志数据和对应的日志标识存储至第一数据库中。之后,在接收到第一日志上报事件的情况下,执行步骤S104,以完成日志上报过程。
在一些实施例中,可以建立该日志运行数据和日志标识之间的映射关系,将该映射关系也存储至该第一数据库。在另一实施例中,可以建立一个映射关系表,将每一运行日志数据和日志标识之间的映射关系存储至该映射关系表中,其中,可以将日志标识作为索引,将运行日志数据作为索引对应的数据。由此,可以通过在第一数据库中检索索引,以得到对应的日志运行数据。
步骤S104、响应于第一日志上报事件,从所述第一数据库存储的运行日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求。
在一些实施例中,上述第一日志上报事件可以为基于预设触发频率产生的日志上报事件;还可以为接收到用户的上报指令,响应于该上报指令生成的日志上报事件;还可以为第一数据库中存储的运行日志数据满足预设数据阈值后生成的日志上报事件;还可以为累计的存储次数达到存储次数阈值后生成的日志上报事件。本申请对此不做限定。
在一些实施例中,可以基于预设上报数量,从该第一数据库中依次抽取该预设上报数量个运行日志数据作为该待上报日志数据;还可以基于用户的上报指令,从该第一数据库中依次抽取上报指令对应的运行日志数据作为该待上报日志数据。基于此,可以限制每一次上报过程中传输的数据量,便于数据传输和后续的数据校验。
在一些实施例中,所述第一日志上报请求用于指示所述服务器存储所述待上报日志数据和所述待上报日志数据对应的日志标识。其中,上述待上报日志数据和所述待上报日志数据对应的日志标识可以存储至服务器侧的第三数据库中。之后,服务器在存储的日志数据中确定与目标日志标识匹配的目标日志数据。在实施过程中,服务器可以响应于日志查询设备发送的携带目标日志标识的日志查询请求,基于所述目标日志标识在所述第三数据库中查询与所述目标日志标识匹配的已上报日志数据,作为目标日志数据;向所述日志查询设备发送携带所述目标日志数据的日志查询结果。
本申请实施例中,通过监听应用程序运行过程中产生的运行事件,自动生成对应的运行日志数据,相比于传统技术中开发人员手动收集日志数据的方式,可以提升日志数据的收集效率。同时,在收集运行日志数据之后,采用异步上报的方式,先存储至第一数据库,再响应于第一日志上报事件,批量上报运行日志数据,这样,可以减少日志上报过程中对服务器的访问次数,提升数据上报效率;同时,由于存储并上报了每一运行日志数据对应的日志标识,这样可以提升数据查找效率,便于后续的日志数据分析过程。
图2是本申请实施例提供的日志数据处理方法的一个可选的流程示意图,该方法可以由计算机设备的处理器执行。基于图1,所述运行事件包括页面浏览事件;图1中的S102可以更新为S201至S203,将结合图2示出的步骤进行说明。
步骤S201、获取所述页面浏览事件对应的当前页面的页面标识。
其中,所述页面标识包括以下至少之一:所述当前页面的页面代码标识和所述当前页面的页面语义标识。
在一些实施例中,该页面浏览事件为应用程序创建该当前页面并进行展示后生成的事件。其中,由于在一个应用程序中页面对象的Activity或者Fragment类名是唯一不变的,因此该Activity或者Fragment类名可以作为当前页面的页面代码标识;以上述Activity或者Fragment类名作为key,对应的value为当前页面对应的页面语义标识。
步骤S202、将所述页面标识作为所述运行日志数据对应的日志标识。
在此步骤中,建立该页面标识与运行日志数据之间的映射关系。其中,可以建立页面代码标识与运行日志数据之间的映射关系;还可以建立页面语义标识与运行日志数据之间的映射关系。
本申请实施例中,通过建立页面代码标识和/或页面语义标识与运行日志数据之间的映射关系,可以提升后续运行日志数据查询过程中的查询准确度和查询效率。
图3是本申请实施例提供的日志数据处理方法的一个可选的流程示意图,该方法可以由计算机设备的处理器执行。基于图1,所述运行事件包括控件触发事件;图1中的S102可以更新为S301至S302,将结合图3示出的步骤进行说明。
步骤S301、获取所述控件触发事件对应的当前页面的页面标识和已触发控件的控件标识。
其中,所述页面标识包括以下至少之一:所述当前页面的页面代码标识和所述当前页面的页面语义标识,所述控件标识包括以下至少之一:所述已触发控件的控件代码标识和所述已触发控件的控件语义标识。
在一些实施例中,该控件触发事件为应用程序展示当前页面的过程中,当前页面中的控件被触发后生成的事件。其中,将当前页面的Activity或者Fragment类名可以作为当前页面的页面代码标识;以上述Activity或者Fragment类名作为key,将对应的value为当前页面对应的页面语义标识;将当前页面中已触发控件的控件ID作为当前页面中控件的控件代码标识;以控件ID作为key,将对应的value为当前页面中已触发控件的控件语义标识。
步骤S302、将所述页面标识和所述控件标识作为所述运行日志数据对应的日志标识。
在一些实施例中,基于上述页面标识和控件标识,可以确定唯一页面对象中唯一的控件对象。因此,可以同时建立该页面标识和控件标识与运行日志数据之间的映射关系。其中,可以建立页面代码标识、控件语义标识与运行日志数据之间的映射关系;还可以建立页面语义标识、控件语义标识与运行日志数据之间的映射关系;还可以建立页面代码标识、控件代码标识与运行日志数据之间的映射关系;还可以建立页面语义标识、控件代码标识与运行日志数据之间的映射关系。
本申请实施例中,通过建立页面代码标识和/或页面语义标识、控件代码标识和/或控件语义标识、与运行日志数据之间的映射关系,可以提升后续运行日志数据查询过程中的查询准确度和查询效率。
图4是本申请实施例提供的日志数据处理方法的一个可选的流程示意图,该方法可以由计算机设备的处理器执行。基于图1,图1中的S103可以更新为S401至S403,将结合图4示出的步骤进行说明。
步骤S401、将所述运行日志数据和所述日志运行数据对应的日志标识存储至所述第一数据库。
步骤S402、响应于所述运行日志数据对应的存储事件,基于历史存储信息确定当前存储信息。
步骤S403、在所述当前存储信息满足预设上报条件的情况下,生成所述第一日志上报事件。
在一些实施例中,所述历史存储信息可以是在所述存储事件之前,所述第一数据库中运行日志数据的历史数据数量;所述基于历史存储信息确定当前存储信息,包括:基于所述历史数据数量和所述存储事件对应的存储数量,确定当前存储数量。
相应的,所述在所述当前存储信息满足预设上报条件的情况下,生成所述第一日志上报事件,可以包括:在所述当前存储数量达到预设数量阈值的情况下,生成第一日志上报事件。
在一些实施例中,所述历史存储信息可以是在所述存储事件之前,终端设备触发存储事件的历史存储次数;所述基于历史存储信息确定当前存储信息,包括:基于所述历史存储次数,确定当前存储次数。
相应的,所述在所述当前存储信息满足预设上报条件的情况下,生成所述第一日志上报事件,可以包括:在所述当前存储次数达到预设次数阈值的情况下,生成第一日志上报事件。
本申请实施例中,通过在产生运行日志数据之后,采用异步上报的方式,先将产生的运行日志数据存储至第一数据库,并在满足一定条件后,对第一数据库中的运行日志数据进行批量上报,这样,相较于采用实时上报的方式,可以减少对服务器带的访问压力。
图5是本申请实施例提供的日志数据处理方法的一个可选的流程示意图,该方法可以由计算机设备的处理器执行。基于上述任一实施例,以基于图1为例,所述第一数据库包括多个所述运行日志数据;图1中的S104可以更新为S501至S503,将结合图5示出的步骤进行说明。
步骤S501、获取每一所述运行日志数据对应的日志时间。
在一些实施例中,该第一数据库可以包括上述运行事件对应的运行日志数据,还可以包括历史运行事件对应的运行日志数据。其中,每一所述运行日志数据对应的日志时间可以为运行日志数据对应的运行事件的生成时间;还可以是该运行日志数据存入该第一数据库的时间。
步骤S502、按照日志时间从早到晚的顺序对多个所述运行日志数据进行排序,将排序靠前的预设上报数量个运行日志数据作为所述待上报日志数据。
在一些实施例中,在从该第一数据库存储的多个运行日志数据确定待上报日志数据的过程中,可以基于各运行日志数据的日志时间,将最早的预设上报数量个运行日志数据作为所述待上报日志数据。
其中,可以按照日志时间从早到晚的顺序对多个所述运行日志数据进行排序,将前N个运行日志数据作为所述待上报日志数据。
步骤S503、向服务器发送携带所述预设上报数量个待上报日志数据和每一所述待上报日志数据对应的日志标识的第一日志上报请求。
在一些实施例中,终端设备可以将上述预设上报数量个待上报日志数据和每一所述待上报日志数据对应的日志标识进行打包,并通过该第一日志上报请求将打包后的日志数据和对应的日志标识发送至所述服务器。对应的,服务器可以解析该第一日志上报请求,以获得每一所述待上报日志数据和每一所述待上报日志数据对应的日志标识,并存储于服务器中。
本申请实施例中,通过基于各运行日志数据的日志时间,将最早的预设上报数量个运行日志数据作为待上报日志数据,由此可以提升日志上报过程的合理性,减少因产生大量运行日志数据,而导致之前运行日志数据被遗漏上报的情况。
图6是本申请实施例提供的日志数据处理方法的一个可选的流程示意图,该方法可以由计算机设备的处理器执行。基于上述任一实施例,以基于图1为例,所述方法还可以包括步骤S601至步骤S602,将结合图6示出的步骤进行说明。
步骤S601、获取所述待上报日志数据对应的上报结果。
在一些实施例中,服务器在接收到上述预设上报数量个待上报日志数据和每一所述待上报日志数据对应的日志标识之后,可以基于每一待上报日志数据库的实际上报情况,生成所述上报结果,并将该上报结果反馈至终端设备。其中,该上报结果用于指示每一所述待上报日志数据是否上报成功。
在另一些实施例中,终端设备可以发送上报结果查询请求至所述服务器,服务器响应于该上报结果查询请求,基于每一待上报日志数据库的实际上报情况,生成所述上报结果,并将该上报结果反馈至终端设备。
步骤S602、在所述上报结果表征所述待上报日志数据上报失败的情况下,将所述待上报日志数据存储至第二数据库。
其中,在所述上报结果表征所述待上报日志数据上报失败的情况下,将所述待上报日志数据作为失败日志数据存储至第二数据库;响应于所述待上报日志数据存储完成,将所述第一数据库中的该待上报日志数据删除。此时,完成了待上报日志数据从第一数据库向第二数据库的迁移。由此,第一数据库和第二数据库实现了明确的功能划分,其中,第一数据库用于存储未上报过的运行日志数据,第二数据库用于存储上报失败的失败日志数据。
在另一些实施例中,在所述上报结果表征所述待上报日志数据上报成功的情况下,将所述待上报日志数据从所述第一数据库中删除。
基于上述实施例,图1中的步骤S104可以更新为步骤S603。
步骤S603、响应于第一日志上报事件,从所述第一数据库存储的运行日志数据和所述第二数据库存储的失败日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求。
其中,由于该第一数据库存在未同步至服务器的运行日志数据,该第二数据库中存在未成功同步至服务器的失败日志数据,因此,上述步骤S104可以通该第一数据库和第二数据库中同时确定该待上报日志数据。
在一些实施例中,可以通过以下方案实现上述从所述第一数据库存储的运行日志数据和所述第二数据库存储的失败日志数据中确定待上报日志数据:基于日志时间,从所述第二数据库中依次抓取失败日志数据作为所述待上报日志数据,直至所述第二数据库为空或所述待上报日志数据的数量达到预设上报数量;在所述第二数据库为空且待上报日志数据的数量未达到预设上报数量的情况下,基于日志时间,从所述第一数据库中依次抓取运行日志数据作为所述待上报日志数据,直至所述第一数据库为空或所述待上报日志数据的数量达到预设上报数量。
在一些实施例中,所述第一数据库包括多个所述运行日志数据;所述第二数据库包括多个所述失败日志数据。可以通过步骤S6031至步骤S6033实现上述从所述第一数据库存储的运行日志数据和所述第二数据库存储的失败日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求。
步骤S6031、获取每一所述运行日志数据对应的日志时间和每一所述失败日志数据对应的日志时间。
在一些实施例中,该第一数据库可以包括上述运行事件对应的运行日志数据,还可以包括历史运行事件对应的运行日志数据。其中,每一所述运行日志数据对应的日志时间可以为运行日志数据对应的运行事件的生成时间;还可以是该运行日志数据存入该第一数据库的时间。
在一些实施例中,每一所述失败日志数据对应的日志时间可以为失败日志数据对应的运行事件的生成时间;还可以是该失败日志数据存入第一数据库的时间;还可以是失败日志数据存入第二数据库的时间。
步骤S6032、按照日志时间从早到晚的顺序对多个所述运行日志数据和多个所述失败日志数据进行排序,将排序靠前的预设上报数量个日志数据作为所述待上报日志数据。
示例性的,若存在3个运行日志数据,包括第一日志数据、第二日志数据和第三日志数据;存在3个失败日志数据,包括第四日志数据、第五日志数据和第六日志数据。在基于日志时间对3个运行日志数据和3个失败日志数据进行排序之后,得到第一日志数据、第四日志数据、第五日志数据、第六日志数据、第二日志数据和第三日志数据的队列,在预设上报数量为4个的情况下,则将该第一日志数据、第四日志数据、第五日志数据、第六日志数据作为4个待上报日志数据进行上报,而第二日志数据和第三日志数据仍然存储在该第一数据库中。
步骤S6033、向服务器发送携带所述预设上报数量个待上报日志数据和每一所述待上报日志数据对应的日志标识的第一日志上报请求。
在一些实施例中,终端设备还会获取每一待上报日志数据对应的上报结果。
其中,在该上报结果表征所述待上报日志数据上报失败,且所述待上报日志数据对应第一数据库中的运行日志数据的情况下,将所述待上报日志数据作为失败日志数据存储至第二数据库;响应于所述待上报日志数据存储完成,将所述第一数据库中的该待上报日志数据删除。
其中,在该上报结果表征所述待上报日志数据上报失败,且所述待上报日志数据对应第二数据库中的失败日志数据的情况下,由于该待上报日志数据已经存储在该第二数据库中,可以不做任何操作。在一些实施例中,还可以统计各个失败日志数据的上报失败次数。
其中,在该上报结果表征所述待上报日志数据上报失败,且所述待上报日志数据对应第一数据库中的运行日志数据的情况下,将所述待上报日志数据作为失败日志数据存储至第二数据库;响应于所述待上报日志数据存储完成,将所述第一数据库中的该待上报日志数据删除。
其中,在该上报结果表征所述待上报日志数据上报失败,且所述待上报日志数据对应第二数据库中的失败日志数据的情况下,由于该待上报日志数据已经存储在该第二数据库中,可以不做任何操作。在一些实施例中,还可以统计各个失败日志数据的上报失败次数。
本申请实施例中,通过监听日志数据上报的结果,在发生日志数据上报失败的情况下,会将上报失败的日志数据存储在第二数据库里面,等下次触发上报请求的时候再次上报第二数据库里面的数据,以此保证运行日志数据的准确性和完整性。
图7是本申请实施例提供的日志数据处理方法的一个可选的流程示意图,该方法可以由计算机设备的处理器执行。基于上述任一实施例,以基于图1为例,所述方法还可以包括S701至S702,将结合图7示出的步骤进行说明。
步骤S701、监听所述应用程序对应的崩溃事件,并基于所述崩溃事件生成对应的崩溃日志数据,并存储至预设路径。
在一些实施例中,可以通过监听系统异常接口的事件回调,捕获该应用程序对应的崩溃事件。其中,可以通过捕获安卓系统的uncaughtException回调,进而获取到崩溃日志数据,将该崩溃日志数据存储至预设路径下。
在一些实施例中,该崩溃日志数据可以包括以下至少之一:崩溃栈、崩溃类型等信息。
步骤S702、响应于第二日志上报事件,从所述预设路径获取所述崩溃日志数据,并向服务器发送携带所述崩溃日志数据的第二日志上报请求。
在一些实施例中,上述第二日志上报事件可以通过以下方法生成:获取所述应用程序的主线程状态;在所述主线程状态为空闲状态的情况下,生成所述第二日志上报事件。
在一些实施例中,可以基于安卓系统特征,在主线程空闲的时候会调用IdleHandler的queueIdle()方法,将该崩溃日志数据上报至服务器。
需要说明的是,本申请并不限定步骤S701和步骤S702在图1实施例中的执行位置,该步骤S701和步骤S702可以在步骤S101至步骤S104任意一个步骤的执行过程中执行,也可以在任意一个步骤之前或之后执行。
本申请实施例中,监听所述应用程序对应的崩溃事件,并生成崩溃日志数据,提升了应用程序运行数据获取的全面性;同时,由于在主线程空闲的时候上报该崩溃日志数据,这样,可以避免影响主线程的性能。
图8是本申请实施例提供的日志数据处理方法的一个可选的流程示意图,该方法可以由计算机设备的处理器执行。基于上述任一实施例,以基于图1为例,所述运行事件包括以下至少之一:页面浏览事件、控件触发事件。图1中的S101可以包括为S801、S802,将结合图8示出的步骤进行说明。
步骤S801、在所述运行事件包括所述页面浏览事件的情况下,监听活动生命周期回调接口的事件回调,捕获当前页面的页面浏览事件;基于所述页面浏览事件,确定页面浏览数据;所述运行日志数据包括所述页面浏览数据。
在一些实施例中,该页面浏览事件为应用程序创建该当前页面并进行展示后生成的事件。上述活动生命周期接口为ActivityLifecycleCallbacks,通过监听该ActivityLifecycleCallbacks,以捕获该页面浏览事件。其中,活动生命周期接口可以获取应用程序所有Activity的生命周期回调,在捕获该页面浏览事件的过程中,可以通过监测Activity是否调用了onActivityResumed(),进而实现该页面浏览事件的捕获。
在一些实施例中,基于该页面浏览事件,可以得到当前页面对应的页面浏览数据,该页面浏览数据包括以下至少之一:页面名称、页面打开时间点和页面关闭时间点。
其中,可以通过检测页面对象创建函数onActivityCreated和页面对象销毁函数onActivityDestroyed,分别确定页面打开时间点和页面关闭时间点。这两个函数分别在页面被创建的时候和页面被销毁的时候调用,并且系统会将activity作为参数传入到对应的函数中,activity参数表示的就是对应的启动/销毁页面。
步骤S802、在所述运行事件包括所述控件触发事件的情况下,监听控件触发接口的事件回调,捕获当前页面的控件触发事件;基于所述控件触发事件,确定控件触发数据;所述运行日志数据包括所述控件触发数据。
在一些实施例中,该控件触发事件为应用程序展示当前页面的过程中,当前页面中的控件被触发后生成的事件。上述控件触发接口可以为Listener代理、Hook、AccessibilityDelegate、dispatchTouchEvent中的至少之一。
其中,以控件触发接口为AccessibilityDelegate为例,可以根据安卓系统中的控件被触发时会生成无障碍事件的特点,终端设备可以对无障碍事件进行监听,并在监听到指定的无障碍事件发生时,通过调用AccessibilityDelegate中的sendAccessibilityEvent方法生成相应的控件触发数据。其中,该控件触发数据可以包括控件点击、窗口变化等数据。
在一些实施例中,在基于AccessibilityDelegate监听上述控件触发事件的过程中,遍历页面每一view注册事件。这样,遍历DecorView下所有的子View,并且注册到AccessibilityDelegate,这样在用户触发页面控件的时候就会捕捉到相应的事件并进行处理。
基于上述实施例,通过监听活动生命周期回调接口的事件回调,可以对应用程序中页面对象进行监听,提升了对当前页面的监听效率,从采集页面浏览数据的角度提升了用户行为数据的获取的全面性;通过监听控件触发接口的事件回调,可以对当前页面中控件触发事件进行监听,从采集控件触发数据的角度提升了用户行为数据的获取的全面性。
在一些实施例中,终端设备将本地第一数据库中的日志运行数据上报至服务器之后,可以由服务器对该日志运行数据进行分析,进而得到可以表征应用程序运行情况的日志分析结果,之后,工程师可以通过任意一个终端设备访问该服务器以获取该日志分析结果。
在另一些实施例中,终端设备还可以在本地对该第一数据库中的日志运行数据进行分析,得到对应的日志分析结果,由此,基于上述任一实施例,所述方法还可以包括:响应于日志分析事件,获取日志分析任务需要解析的日志运行数据对应的待查询日志标识;基于所述待查询日志标识在所述第一数据库中查询与所述待查询日志标识匹配的日志运行数据,作为待分析日志数据;基于所述待分析日志数据生成所述日志分析任务对应的日志分析结果。
其中,该日志分析事件可以是终端设备中预设的按照预设频率触发的事件;也可以是响应于用户操作生成的事件;还可以是第一数据库中日志数量满足预设要求时生成的事件,本申请对此不作限定。
在一些实施例中,该日志分析结果可以包括七日留存数据、首页控件用户行为数据、启动次数数据和日活数据。其中,本申请对基于日志运行数据生成日志分析结果的方案不作限定。
图9为本申请实施例提供的一种日志数据处理方法的实现流程示意图,该日志数据处理方法应用于服务器,如图9所示,该方法包括如下步骤S901至步骤S903:
步骤S901、接收终端设备响应于第一日志上报事件发送的第一日志上报请求;所述第一日志上报请求携带待上报日志数据和所述待上报日志数据对应的日志标识。
在一些实施例中,上述待上报日志数据和待上报日志数据对应的日志信息可以预先保存在该终端设备的第一数据库中;在另一些实施例中,该待上报日志数据和待上报日志数据对应的日志信息可以预先保存在该终端设备的第一数据库和第二数据库中。其中,上述存储过程可以参阅前述实施例中终端设备侧的实施例。
步骤S902、将所述待上报日志数据和所述待上报日志数据对应的日志标识存储至第三数据库中;所述第三数据库包括已上报日志数据和所述已上报数据对应的日志标识。
在一些实施例中,服务器可以在接收到终端设备上报的日志数据和对应的日志标识之后,保存至服务器本地的第三数据库。
步骤S903、响应于日志查询设备发送的携带目标日志标识的日志查询请求,基于所述目标日志标识在所述第三数据库中查询与所述目标日志标识匹配的已上报日志数据,作为目标日志数据。
在一些实施例中,该日志查询设备可以是与服务器存在通信连接的任意终端设备,当前,也可以是发送该第一日志上报请求的终端设备。该日志查询请求中携带该目标日志标识,进而可以在上述第三数据库中查询该目标日志标识匹配的已上报日志数据,作为目标日志数据。
步骤S904、向所述日志查询设备发送携带所述目标日志数据的日志查询结果。
本申请实施例中,由于存储了所述待上报日志数据和所述待上报日志数据对应的日志标识,这样可以在接收到日志查询请求后,基于日志标识快速并准确地找到对应的目标日志数据,提升数据查找效率,便于后续的日志数据分析过程。
图10为本申请实施例提供的一种日志数据处理方法的实现流程示意图,该方法可以由计算机设备的处理器执行。基于图9,所述日志查询请求为页面浏览查询请求,所述目标日志标识包括目标页面标识,所述第三数据库包括多个所述已上报日志数据;所述步骤S903还可以包括S1001至S1003,将结合图10示出的步骤进行说明。
步骤S1001、在所述第三数据库中,获取多个所述已上报日志数据中每一所述已上报日志数据对应的页面标识。
步骤S1002、基于每一所述已上报日志数据对应的页面标识,将与所述目标页面标识匹配的已上报日志数据作为所述目标日志数据。
在一些实施例中,所述页面标识包括以下至少之一:页面代码标识和页面语义标识。
本申请实施例中,通过建立页面代码标识和/或页面语义标识与运行日志数据之间的映射关系,可以提升后续运行日志数据查询过程中的查询准确度和查询效率。
在一些实施例中,所述日志查询请求为控件触发查询请求,所述目标日志标识包括目标页面标识和目标控件标识,第三数据库包括多个所述已上报日志数据。所述步骤S903还可以包括S1003至S1004。
步骤S1003、在所述第三数据库中,获取多个所述已上报日志数据中每一所述已上报日志数据对应的页面标识和控件标识。
步骤S1004、基于每一所述已上报日志数据对应的页面标识和控件标识,将与所述目标页面标识和所述目标控件标识匹配的已上报日志数据作为所述目标日志数据。
在一些实施例中,所述页面标识包括以下至少之一:页面代码标识和页面语义标识,所述控件标识包括以下至少之一:控件代码标识和控件语义标识。
在一些实施例中,所述方法还可以包括:接收所述终端设备发送的第二日志上报请求;所述第一日志上报请求携带所述应用程序的待崩溃日志数据;将所述待崩溃日志数据存储至第四数据库中。
本申请实施例中,通过建立页面代码标识和/或页面语义标识、控件代码标识和/或控件语义标识、与运行日志数据之间的映射关系,可以提升后续运行日志数据查询过程中的查询准确度和查询效率。
下面说明本申请实施例提供的日志数据处理方法在安卓应用程序开发场景中的应用。
在安卓开发的过程中,需要开发工程师手动去发送相关的日志到服务器端,例如页面的展示、按钮的点击等,然后服务端接收这些数据之后存储到数据库供产品工程师查看相应的数据。如果产品工程师需要查看和分析的数据众多,无疑会增加客户端工程师的开发成本。基于此,本申请提出了一种安卓日志自动化采集和分析方法,旨在帮助开发工程师自动上报埋点数据,提升开发效率。
基于上述技术问题,本申请提出了一种安卓日志自动化采集和分析方法,旨在降低客户端工程师的手动埋点成本,提升产品工程师查看和分析数据的效率。
图11为本申请实施例提供的一种日志数据处理装置的组成结构示意图,如图11所示,日志数据处理装置1100包括:日志获取模块1110、日志存储模块1120、日志上报模块1130、日志分析模块1140,其中:
日志获取模块1110的主要功能是自动获取安卓APP运行期间的各项数据,包括:页面浏览事件、页面控件点击事件、页面展示时长、崩溃日志收集等等。
在一些实施例中,关于页面浏览事件的自动收集,请参阅图12A,图12A示出了一种页面浏览事件收集方法的流程示意图。该页面浏览事件收集方法可以包括:
步骤S1201、启动应用程序。
步骤S1202、打开当前页面。
步骤S1203、通过活动生命周期回调接口监听当前页面的浏览事件。
其中,可以通过监听ActivityLifecycleCallbacks(活动生命周期回调)接口的事件回调,来捕获到当前页面的浏览事件。具体是在onActivityResumed(安卓页面完全展现在用户面前)中监听到当前页面的浏览事件,进而获取到当前页面的名称信息,以此作为页面浏览事件的数据源。
步骤S1204、获取当前页面的浏览信息。
其中,该浏览信息至少包括当前页面的页面名称。在一些实施例中,还可以获取该当前页面的打开时间点和关闭时间点。
步骤S1205、完成页面浏览事件的采集过程。
在一些实施例中,在捕获到当前页面的展示事件之后,关于页面控件点击事件的自动收集,请参阅图12B,图12B示出了一种页面控件点击事件收集方法的流程示意图。该页面控件点击事件收集方法可以包括:
步骤S1206、获取当前页面的根布局组件。
步骤S1207、基于该根布局组件,遍历当前页面的每一个子view,并注册到自定义的AccessibilityDelegate。
步骤S1208、监听sendAccessibilityEvent方法,过滤TYPE_VIEW_CLICKED(单击的展示类型)事件。
步骤S1209、完成页面控件点击数据的采集过程。
在一些实施例中,还可以通过监听sendAccessibilityEvent方法,获取当前页面中的选中事件,滑动事件,文本变化事件等。
在一些实施例中,关于崩溃日志事件的自动收集,请参阅图12C,图12C示出了一种崩溃日志事件收集方法的流程示意图。该崩溃日志事件收集方法可以包括:
步骤S1210、应用程序运行过程中发生崩溃。
步骤S1211、安卓系统主动回调uncaughtException(未捕获异常)方法。
步骤S1212、获取到崩溃栈信息,崩溃时间、崩溃包名、崩溃类型等信息一起保存为崩溃日志。
步骤S1213、完成崩溃日志的采集过程。
其中,当APP运行期间发生崩溃,安卓系统会主动回调接口UncaughtExceptionHandler(未捕获异常处理程序)内的uncaughtException()方法。该方法的参数Throwable对象包含了APP的崩溃栈信息,本发明通过解析该Throwable对象获取到崩溃栈信息,崩溃时间、崩溃包名、崩溃类型等信息一起保存为崩溃日志。
在一些实施例中,响应于该应用程序下次启动,通过预设的上报策略确定一个合适的上报时间点,在该上报时间点将崩溃日志上报服务器供开发工程师查看。
基于上述图12A至图12B公开的实施例,实现了安卓端页面浏览、按钮点击、崩溃日志等事件的自动采集功能,相比于传统技术中由开发人员手动采集的操作,可以省去客户端开发工程师手动采集的过程,提升了运行日志的获取效率。
在一些实施例中,在采集上述页面浏览、按钮点击等事件之后,关于日志的存储过程,请参阅图12D,图12D示出了一种日志存储方法的流程示意图。该日志存储方法可以包括:
步骤S1214、在应用程序运行过程中采集埋点数据。
步骤S1215、在当前内存中记录的数据数量不满足预设数量阈值的情况下,将采集的埋点数据写入数据库。
步骤S1216、在当前内存中记录的数据数量满足预设数量阈值的情况下,从数据库中读取埋点数据,并上报至服务器,当前计数清零。
其中,考虑到各个业务方使用本申请提供的自动化日志采集SDK会产生大量的数据,如果全部采用实时上报的方式,会给服务器带来比较大的访问压力。基于此,本申请采取了异步上报的方式和服务端通信,应用程序在运行期间产生的页面浏览、按钮点击等事件首先会被存储到数据库中。每次触发日志存储的时候,本申请都会暂时记录一个累计的次数,等累计的次数达到阈值(默认50)之后,会采取批量查询数据库的方式进行上报,同时会从数据库中删除已经上报成功的数据。
在一些实施例中,在采集上述崩溃日志之后,关于崩溃日志的存储过程,请参阅图12E,图12E示出了一种崩溃日志存储方法的流程示意图。该崩溃日志存储方法可以包括:
步骤S1217、应用程序在运行过程中发生崩溃。
步骤S1218、获取到崩溃栈信息,崩溃时间、崩溃包名、崩溃类型等信息一起保存为崩溃日志。
步骤S1219、等待合适的时机上报至服务器。
其中,关于崩溃日志的存储,因为APP发生crash的时候进程被意外中断,因此不能采用实时上报的方式上报崩溃日志。本申请会暂时将崩溃日志存储在APP目录下的某个文件路径,等后续会找一个合适的时机将崩溃日志上报至服务器。
在一些实施例中,关于运行日志的上报过程,请参阅图12F,图12F示出了一种运行日志上报方法的流程示意图。该运行日志上报方法可以包括:
步骤S1220、数据库中的数据数量满足预设数量阈值,或,应用程序启动时查询数据库。
在一些实施例中,上述预设数量阈值可以设置为50,在数据库中埋点数据的数据数量达到50,即日志存储次数达到50的情况下,进行一次批量上报,将APP存储在本地的日志数据同步到服务端。
在另一些实施例中,还可以监测该应用程序的启动事件,响应于该启动事件,将APP存储在本地的日志数据同步到服务端。
步骤S1221、查询数据库和失败数据库,按照时间顺序,筛选预设数量的待上报数据,并将待上报数据上报至服务器。
在一些实施例中,应用程序存储在本地的日志数据可以包括存储在第一数据库的日志数据和存储在第二数据库中的日志数据。其中,该第一数据库为应用程序在运行过程中,通过上述日志收集方法收集到的日志数据;该第二数据库为上报数据至服务器的过程中,上报失败的日志数据。
步骤S1222、在待上报数据上报失败的情况下,将该待上报数据存储至该失败数据库。
步骤S1223、在待上报数据上报成功的情况下,从在数据库和/或失败数据库中清除已经上报的待上报数据。
在一些实施例中,本申请实施例中的客户端可以监听日志上报的结果。在发生日志上报失败的情况下,会将上报失败的日志存储在上述第二数据库(可以称为失败FailLog数据库)里面,等下次触发上报请求的时候再次上报FailLog数据库里面的数据,以此保证数据的准确性和完整性。
步骤S1224、重新确定数据库中的数据数量。
在一些实施例中,在步骤S1221中按照时间顺序,从第一数据库和第二数据库中存储的多个日志数据中筛选预设数量的待上报数据的过程中,存在第一数据库中一部分日志数据作为待上报数据,另一部分日志数据由于时间较晚仍存储于第一数据库的情况。基于此,在执行上述待上报数据的上报过程之后,需要重新确定第一数据库中的数据数量,进而在应用程序运行过程中,基于重新确定的数据数量和新存储至第一数据库中的日志数据,确定是否触发日志上报过程。
在一些实施例中,关于APP崩溃日志的上报,可以在APP主线程空闲的时候上报崩溃日志文件。其中,可以根据安卓系统特性,在UI线程空闲的情况下,调用IdleHandler的queueIdle()方法,执行崩溃日志上报操作,避免影响主线程的性能。
请参阅图12G,其示出了一种日志数据分析方法的流程示意图,该日志数据分析方法可以包括:
步骤S1225、页面浏览自动采集和页面按钮点击自动采集。
在一些实施例中,在页面浏览自动采集的过程中,因为在一个APP中页面的Activity或者Fragment类名是唯一不变的,因此可以采用类名作为页面浏览的key,对应的value就是当前页面对应的名称。基于此,产品工程师可以通过类名或者页面名称从日志数据库中找到当前页面对应的浏览数据,快速准确的获取页面的展示次数、曝光量等信息。
在一些实施例中,在页面按钮点击自动采集的过程中,可以采用类名+控件id的方式来区分不同页面中的不同页面按钮,其中,本申请针对不同的APP已经预先设置了按钮标识和按钮名称之间的映射关系。同样的,产品工程师可以通过类名+控件ID,或者页面名称+按钮名称从日志数据库中找到当前页面对应的页面按钮的点击次数,进而进行数据的分析。
步骤S1226、为建立日志数据与查询标识之间的映射关系。
其中,该查询标识可以为上述APP中页面的Activity或者Fragment类名,基于该类名,可以在多个日志数据中找到该类名对应的页面的日志数据;该查询标识还可以为页面名称,基于该页面名称,可以在多个日志数据中找到该页面名称对应的页面的日志数据。
其中,该查询标识还可以为上述APP中页面的Activity或者Fragment类名+控件ID,基于该类名和控件ID,可以在多个日志数据中找到该类名对应的页面中该控件ID对应的控件的日志数据;该查询标识还可以为页面名称+控件名称,基于该页面名称和控件名称,可以在多个日志数据中找到该页面名称对应的页面中该控件名称对应的控件的日志数据。
步骤S1227、上报自动采集的日志数据、日志数据与查询标识之间的映射关系至服务器。
在一些实施例中,数据上报的过程可以参照前述实施例。在上报日志数据的同时,还会上报各日志数据与查询标识之间的映射关系。
步骤S1228、基于上述日志数据与查询标识之间的映射关系,查询目标日志数据以进行日志分析。
在一些实施例中,服务器可以接收产品工程师基于任一客户端发送的日志查询请求,该日志查询请求可以携带待查询标识,服务器基于该待查询标识,在客户端之前上报的日志数据中,获取与该待查询标识匹配的日志数据,并反馈至对应的客户端。
在一些实施例中,服务器可以基于预设的日志分析策略,在上报的多个日志数据中,基于上述日志数据与查询标识之间的映射关系自行调取需要的目标日志数据,自动生成日志分析结果。示例性的,该日志分析结果可以包括七日留存数据、首页控件用户行为数据、启动次数数据和日活数据等。
基于上述实施例,本申请实施例提供的日志上报和分析方法主要包括:在安卓应用初始化的时候,注册日志自动化采集工具;如步骤S1202,通过注册ActivityLifecycleCallbacks接口,监听页面启动事件回调,在onActivityResumed方法内捕获页面展示事件,并将数据自动发至服务端;如步骤S1207,获取当前页面的根布局,遍历每一个子View注册AccessibilityDelegate回调,当控件被点击的时候,监听TYPE_VIEW_CLICKED事件的回调,以捕获控件点击等事件;如步骤S1211,在APP运行过程中发生CRASH的情况下,通过捕获安卓系统的uncaughtException回调,进而获取到崩溃栈、崩溃类型等信息,保存在崩溃日志中,并后续同步至服务器;如步骤S1214至步骤S1216,在埋点数据开始记录的时候,暂时将产生的埋点数据保存在埋点数据库中,等超过50次的时候会统一上报一批,并清除次数,通过这种方式降低了服务器的压力;如步骤S1221,在app启动时候和累次存入数据库次数超过50次的时候批量上报一次服务器,如果上报成功会清除本地的存储次数和数据库的相关数据,并重新开始计次。如果上报失败,会将数据存入失败数据库FailLog内,等待下次上报再次尝试;如步骤S1228,本发明会根据埋点的key和对应的按钮或者页面做一一映射,服务端会将对应的数据统一落库供产品工程师查看。
基于本申请实施例,客户端可以自动完成安卓端的页面展示、按钮点击等行为的上报,同时支持APP崩溃数据的自动存储和上报;服务端基于客户端对埋点数据的映射关系统一进行处理,产品工程师可以很方便的查看各项应用数据。
基于前述的实施例,本申请实施例提供一种日志数据处理装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CentralProcessing Unit,CPU)、微处理器(Microprocessor Unit,MPU)、数字信号处理器(DigitalSignal Processor,DSP)或现场可编程门阵列(Field Programmable Gate Array,FPGA)等。
图13为本申请实施例提供的一种日志数据处理装置的组成结构示意图,如图13所示,日志数据处理装置1300包括:监听模块1310、获取模块1320、第一存储模块1330、上报模块1340,其中:
监听模块1310,用于在应用程序运行过程中,监听所述应用程序对应的运行事件,并基于所述运行事件生成对应的运行日志数据;
获取模块1320,用于获取所述运行日志数据对应的日志标识;所述日志标识用于在所述应用程序中确定所述运行日志数据对应的程序对象;
第一存储模块1330,用于将所述运行日志数据和所述日志运行数据对应的日志标识存储至第一数据库;
上报模块1340,用于响应于第一日志上报事件,从所述第一数据库存储的运行日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求。
在一些实施例中,所述运行事件包括页面浏览事件;所述获取模块1320,还用于:
获取所述页面浏览事件对应的当前页面的页面标识;所述页面标识包括以下至少之一:所述当前页面的页面代码标识和所述当前页面的页面语义标识;
将所述页面标识作为所述运行日志数据对应的日志标识。
在一些实施例中,所述运行事件包括控件触发事件;所述获取模块1320,还用于:
获取所述控件触发事件对应的当前页面的页面标识和已触发控件的控件标识;所述页面标识包括以下至少之一:所述当前页面的页面代码标识和所述当前页面的页面语义标识,所述控件标识包括以下至少之一:所述已触发控件的控件代码标识和所述已触发控件的控件语义标识;
将所述页面标识和所述控件标识作为所述运行日志数据对应的日志标识。
在一些实施例中,所述第一存储模块1330,还用于:
将所述运行日志数据和所述日志运行数据对应的日志标识存储至所述第一数据库;
响应于所述运行日志数据对应的存储事件,基于历史存储信息确定当前存储信息;
在所述当前存储信息满足预设上报条件的情况下,生成所述第一日志上报事件。
在一些实施例中,所述第一数据库包括多个所述运行日志数据;所述上报模块1340,还用于:
获取每一所述运行日志数据对应的日志时间;
按照日志时间从早到晚的顺序对多个所述运行日志数据进行排序,将排序靠前的预设上报数量个运行日志数据作为所述待上报日志数据;
向服务器发送携带所述预设上报数量个待上报日志数据和每一所述待上报日志数据对应的日志标识的第一日志上报请求。
在一些实施例中,所述上报模块1340,还用于:
获取所述待上报日志数据对应的上报结果;
在所述上报结果表征所述待上报日志数据上报失败的情况下,将所述待上报日志数据存储至第二数据库。
在一些实施例中,所述上报模块1340,还用于:
从所述第一数据库存储的运行日志数据和所述第二数据库存储的失败日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求。
在一些实施例中,所述第一数据库包括多个所述运行日志数据;所述第二数据库包括多个所述失败日志数据;所述上报模块1340,还用于:
获取每一所述运行日志数据对应的日志时间和每一所述失败日志数据对应的日志时间;
按照日志时间从早到晚的顺序对多个所述运行日志数据和多个所述失败日志数据进行排序,将排序靠前的预设上报数量个日志数据作为所述待上报日志数据;
向服务器发送携带所述预设上报数量个待上报日志数据和每一所述待上报日志数据对应的日志标识的第一日志上报请求。
在一些实施例中,所述监听模块1310,还用于:监听所述应用程序对应的崩溃事件,并基于所述崩溃事件生成对应的崩溃日志数据,并存储至预设路径;所述上报模块1340,还用于:响应于第二日志上报事件,从所述预设路径获取所述崩溃日志数据,并向服务器发送携带所述崩溃日志数据的第二日志上报请求。
在一些实施例中,所述上报模块1340,还用于:
获取所述应用程序的主线程状态;
在所述主线程状态为空闲状态的情况下,生成所述第二日志上报事件。
在一些实施例中,所述运行事件包括以下至少之一:页面浏览事件、控件触发事件;所述监听模块1310,还用于:在所述运行事件包括所述页面浏览事件的情况下,监听活动生命周期回调接口的事件回调,捕获当前页面的页面浏览事件;基于所述页面浏览事件,确定页面浏览数据;所述运行日志数据包括所述页面浏览数据;
在一些实施例中,所述监听模块1310,还用于:在所述运行事件包括所述控件触发事件的情况下,监听控件触发接口的事件回调,捕获当前页面的控件触发事件;基于所述控件触发事件,确定控件触发数据;所述运行日志数据包括所述控件触发数据。
在一些实施例中,日志数据处理装置1300还包括:日志分析模块,该日志分析模块用于:响应于日志分析事件,获取日志分析任务需要解析的日志运行数据对应的待查询日志标识;基于所述待查询日志标识在所述第一数据库中查询与所述待查询日志标识匹配的日志运行数据,作为待分析日志数据;基于所述待分析日志数据生成所述日志分析任务对应的日志分析结果。
图14为本申请实施例提供的一种日志数据处理装置的组成结构示意图,如图14所示,日志数据处理装置1400包括:接收模块1410、第二存储模块1420、查询模块1430、发送模块1440,其中:
接收模块1410,用于接收终端设备响应于第一日志上报事件发送的第一日志上报请求;所述第一日志上报请求携带待上报日志数据和所述待上报日志数据对应的日志标识;
第二存储模块1420,用于将所述待上报日志数据和所述待上报日志数据对应的日志标识存储至第三数据库中;所述第三数据库包括已上报日志数据和所述已上报数据对应的日志标识;
查询模块1430,用于响应于日志查询设备发送的携带目标日志标识的日志查询请求,基于所述目标日志标识在所述第三数据库中查询与所述目标日志标识匹配的已上报日志数据,作为目标日志数据;
发送模块1440,用于向所述日志查询设备发送携带所述目标日志数据的日志查询结果。
在一些实施例中,所述日志查询请求为页面浏览查询请求,所述目标日志标识包括目标页面标识,所述第三数据库包括多个所述已上报日志数据;所述查询模块1430,还用于:
在所述第三数据库中,获取多个所述已上报日志数据中每一所述已上报日志数据对应的页面标识;
基于每一所述已上报日志数据对应的页面标识,将与所述目标页面标识匹配的已上报日志数据作为所述目标日志数据;
其中,所述页面标识包括以下至少之一:页面代码标识和页面语义标识。
在一些实施例中,所述日志查询请求为控件触发查询请求,所述目标日志标识包括目标页面标识和目标控件标识,第三数据库包括多个所述已上报日志数据;所述查询模块1430,还用于:
在所述第三数据库中,获取多个所述已上报日志数据中每一所述已上报日志数据对应的页面标识和控件标识;
基于每一所述已上报日志数据对应的页面标识和控件标识,将与所述目标页面标识和所述目标控件标识匹配的已上报日志数据作为所述目标日志数据;
其中,所述页面标识包括以下至少之一:页面代码标识和页面语义标识,所述控件标识包括以下至少之一:控件代码标识和控件语义标识。
在一些实施例中,所述第二存储模块1420,还用于:
接收所述终端设备发送的第二日志上报请求;所述第一日志上报请求携带所述应用程序的待崩溃日志数据;
将所述待崩溃日志数据存储至第四数据库中。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本申请实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的日志数据处理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
本申请实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
图15为本申请实施例提供的一种日志数据处理设备的硬件实体示意图,如图15所示,该日志数据处理设备1500的硬件实体包括:处理器1501和存储器1502,其中,存储器1502存储有可在处理器1501上运行的计算机程序,处理器1501执行程序时实现上述任一实施例的方法中的步骤。
存储器1502存储有可在处理器上运行的计算机程序,存储器1502配置为存储由处理器1501可执行的指令和应用,还可以缓存待处理器1501以及日志数据处理设备1500中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
处理器1501执行程序时实现上述任一项的日志数据处理方法的步骤。处理器1501通常控制日志数据处理设备1500的总体操作。
本申请实施例提供一种计算机存储介质,计算机存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如上任一实施例的日志数据处理方法的步骤。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
上述处理器可以为目标用途集成电路(Application Specific IntegratedCircuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable LogicDevice,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。
上述计算机存储介质/存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (10)

1.一种日志数据处理方法,其特征在于,所述方法包括:
在应用程序运行过程中,监听所述应用程序对应的运行事件,并基于所述运行事件生成对应的运行日志数据;
获取所述运行日志数据对应的日志标识;所述日志标识用于在所述应用程序中确定所述运行日志数据对应的程序对象;
将所述运行日志数据和所述日志运行数据对应的日志标识存储至第一数据库;
响应于第一日志上报事件,从所述第一数据库存储的运行日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求。
2.根据权利要求1所述的方法,其特征在于,所述运行事件包括页面浏览事件;所述获取所述运行日志数据对应的日志标识,包括:
获取所述页面浏览事件对应的当前页面的页面标识;所述页面标识包括以下至少之一:所述当前页面的页面代码标识和所述当前页面的页面语义标识;
将所述页面标识作为所述运行日志数据对应的日志标识。
3.根据权利要求1所述的方法,其特征在于,所述运行事件包括控件触发事件;所述获取所述运行日志数据对应的日志标识,包括:
获取所述控件触发事件对应的当前页面的页面标识和已触发控件的控件标识;所述页面标识包括以下至少之一:所述当前页面的页面代码标识和所述当前页面的页面语义标识,所述控件标识包括以下至少之一:所述已触发控件的控件代码标识和所述已触发控件的控件语义标识;
将所述页面标识和所述控件标识作为所述运行日志数据对应的日志标识。
4.根据权利要求1所述的方法,其特征在于,所述将所述运行日志数据和所述日志运行数据对应的日志标识存储至第一数据库,包括:
将所述运行日志数据和所述日志运行数据对应的日志标识存储至所述第一数据库;
响应于所述运行日志数据对应的存储事件,基于历史存储信息确定当前存储信息;
在所述当前存储信息满足预设上报条件的情况下,生成所述第一日志上报事件。
5.根据权利要求4所述的方法,其特征在于,所述第一数据库包括多个所述运行日志数据;所述从所述第一数据库存储的运行日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求,包括:
获取每一所述运行日志数据对应的日志时间;
按照日志时间从早到晚的顺序对多个所述运行日志数据进行排序,将排序靠前的预设上报数量个运行日志数据作为所述待上报日志数据;
向服务器发送携带所述预设上报数量个待上报日志数据和每一所述待上报日志数据对应的日志标识的第一日志上报请求。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取所述待上报日志数据对应的上报结果;
在所述上报结果表征所述待上报日志数据上报失败的情况下,将所述待上报日志数据存储至第二数据库。
7.一种日志数据处理方法,其特征在于,所述方法包括:
接收终端设备响应于第一日志上报事件发送的第一日志上报请求;所述第一日志上报请求携带待上报日志数据和所述待上报日志数据对应的日志标识;
将所述待上报日志数据和所述待上报日志数据对应的日志标识存储至第三数据库中;所述第三数据库包括已上报日志数据和所述已上报数据对应的日志标识;
响应于日志查询设备发送的携带目标日志标识的日志查询请求,基于所述目标日志标识在所述第三数据库中查询与所述目标日志标识匹配的已上报日志数据,作为目标日志数据;
向所述日志查询设备发送携带所述目标日志数据的日志查询结果。
8.一种日志数据处理装置,其特征在于,包括:
监听模块,用于在应用程序运行过程中,监听所述应用程序对应的运行事件,并基于所述运行事件生成对应的运行日志数据;
获取模块,用于获取所述运行日志数据对应的日志标识;所述日志标识用于在所述应用程序中确定所述运行日志数据对应的程序对象;
存储模块,用于将所述运行日志数据和所述日志运行数据对应的日志标识存储至第一数据库;
上报模块,用于响应于第一日志上报事件,从所述第一数据库存储的运行日志数据中确定待上报日志数据,并向服务器发送携带所述待上报日志数据和所述待上报日志数据对应的日志标识的第一日志上报请求。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6任一项所述方法中的步骤,或实现权利要求7所述方法中的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述方法中的步骤,或实现权利要求7所述方法中的步骤。
CN202211249358.9A 2022-10-12 2022-10-12 日志数据处理方法、装置、设备及存储介质 Pending CN115510035A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211249358.9A CN115510035A (zh) 2022-10-12 2022-10-12 日志数据处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211249358.9A CN115510035A (zh) 2022-10-12 2022-10-12 日志数据处理方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN115510035A true CN115510035A (zh) 2022-12-23

Family

ID=84509314

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211249358.9A Pending CN115510035A (zh) 2022-10-12 2022-10-12 日志数据处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115510035A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115998332A (zh) * 2023-03-28 2023-04-25 北京轻松筹信息技术有限公司 一种影像采集方法、装置、电子设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115998332A (zh) * 2023-03-28 2023-04-25 北京轻松筹信息技术有限公司 一种影像采集方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN109240886B (zh) 异常处理方法、装置、计算机设备以及存储介质
WO2018196559A1 (zh) 应用程序异常处理方法、装置及存储介质
CN109756562B (zh) 用户界面推送方法、装置、电子设备及存储介质
CN113687974B (zh) 客户端日志处理方法、装置及计算机设备
CN109783335B (zh) 用户操作录制还原方法、装置、设备及可读存储介质
CN112148606B (zh) 埋点测试方法、装置、设备及计算机可读介质
CN115510035A (zh) 日志数据处理方法、装置、设备及存储介质
CN113254320A (zh) 记录用户网页操作行为的方法及装置
CN109388558A (zh) 一种管理电子设备的方法、装置、设备及存储介质
CN112860567A (zh) 埋点识别方法、装置、计算机设备和存储介质
CN111782508B (zh) 自动测试方法、装置、电子设备和存储介质
CN115525523A (zh) 数据处理方法、装置及电子设备、存储介质
CN115687820A (zh) 页面恢复方法、装置及存储介质
CN114116388A (zh) 一种小程序数据采集方法、装置、设备及可读存储介质
CN114564206A (zh) 一种数据非空校验方法、装置、设备及可读存储介质
CN109726019B (zh) 应用程序的交互方法、终端及存储介质
CN113918434A (zh) 应用程序异常发生率统计方法、装置及电子设备
CN115509872A (zh) 一种客户端行为数据采集方法及装置
CN114116159A (zh) 日志采集方法、装置、系统、电子设备及可读介质
CN114385457A (zh) 应用程序数据采集方法、装置、设备及存储介质
CN113190458A (zh) 自动埋点数据分析的方法、装置、计算机设备和存储介质
CN110597647B (zh) 一种消息截获方法、装置、电子设备及存储介质
CN106161087A (zh) 一种Linux系统的网卡错误事件收集方法及系统
CN110659191B (zh) 埋点数据分析方法、装置、计算机设备和存储介质
CN111475322A (zh) 定位stuck线程的方法、装置、计算机设备及可读存储介质

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