CN111813630A - 收集日志信息的方法、装置和计算机设备 - Google Patents
收集日志信息的方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN111813630A CN111813630A CN202010676027.8A CN202010676027A CN111813630A CN 111813630 A CN111813630 A CN 111813630A CN 202010676027 A CN202010676027 A CN 202010676027A CN 111813630 A CN111813630 A CN 111813630A
- Authority
- CN
- China
- Prior art keywords
- log information
- data
- pointer
- designated
- information
- 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
- 238000000034 method Methods 0.000 title claims abstract description 158
- 230000008569 process Effects 0.000 claims abstract description 102
- 238000002372 labelling Methods 0.000 claims abstract description 9
- 238000012216 screening Methods 0.000 claims description 28
- 230000002159 abnormal effect Effects 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 11
- 239000011230 binding agent Substances 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000001914 filtration Methods 0.000 claims description 2
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
- G06F11/3072—Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Abstract
本申请揭示了收集日志信息的方法,包括:通过日志信息回调接口调取各应用程序运行过程中生成的日志信息,日志信息携带标注标识符;判断指定日志信息是否携带日志收集任务指定的标识符,指定日志信息为各应用程序运行过程中生成的日志信息中的任意一条信息;若是,则将指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构。通过在系统内核中开辟一片固定的环形数据缓存区,对全局日志信息进行过滤和筛选后,并把需要缓存的日志信息缓存于环形数据缓存区,并根据环形数据缓存区的特点通过循环覆盖的方式实现无限次重复利用,且通过环形数据缓存区的环形数据结构精准确定需要提取的缓存日志信息。
Description
技术领域
本申请涉及到计算机领域,特别是涉及到收集日志信息的方法、装置和计算机设备。
背景技术
现有应用程序的日志在Android系统上可实时输出出来,但并没有存在Android系统内存中,属于即存即删的类型,以免日志占用内存,影响Android系统的运行流畅度。目前是通过借助一些外置的缓存手段才能把预存储的部分日志保存下来,比如通过adb(Android Debug Bridge调试桥)工具连接PC端进行日志抓取并输出到文件;或者通过将日志先写入文件,然后缓存在sdcard(Secure Digital Memory Card安全数据存储卡)中,最后将该文件导出实现日志抓取。但发明人意识到上述处理方式,导致研发或测试人员需要重新复现异常且借助缓存手段才能抓取日志,影响开发效率,且缓存过程中需要进行大量的IO操作,资源消耗较大,影响设备性能,影响用户体验。
发明内容
本申请的主要目的为提供收集日志信息的方法,旨在解决现有Android系统的日志信息抓取过程繁琐的技术问题。
本申请提出一种收集日志信息的方法,包括:
通过日志信息回调接口调取各应用程序运行过程中生成的日志信息,其中,所述日志信息携带标注标识符;
判断指定日志信息是否携带日志收集任务指定的标识符,其中,所述指定日志信息为各应用程序运行过程中生成的日志信息中的任意一条信息;
若是,则将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构。
优选地,所述将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构的步骤,包括:
获取所述环形数据缓存区中标识数据写入位置的第一指针当前所处位置;
将所述指定日志信息写入所述第一指针当前所处位置;
获取所述指定日志信息的数据量信息;
根据所述数据量信息确定所述第一指针的移动幅度,其中,所述移动幅度等于所述数据量信息对应的存储区长度;
根据所述移动幅度将所述第一指针移动至所述数据量信息对应的存储区长度对应的末端位置。
优选地,所述根据所述移动幅度将所述第一指针移动至所述数据量信息对应的存储区长度对应的末端位置的步骤,包括:
判断所述移动幅度是否大于所述环形数据缓存区的指定跨度,其中,所述指定跨度为开始写入数据时所述第一指针所述位置至标识所述环状数据结构初始位置的第二指针所处位置之间的存储区跨度;
若是,则控制所述第一指针跨过所述第二指针,标识按照所述环状数据结构的预设写入数据的环绕方向的覆盖存储日志信息;
判断是否完成指定时间内的日志信息监控与存储;
若是,则将所述第二指针和所述第一指针移动至所述数据量信息对应的存储区长度对应的末端位置。
优选地,所述将所述指定日志信息写入所述第一指针当前所处位置的步骤,包括:
扫描所述指定日志信息对应的应用程序的进程名称;
按照预设映射关系确定所述进程名称对应的进程标识符;
通过所述进程标识符重新命名所述指定日志信息;
将重新命名的所述指定日志信息,通过Binder写入所述第一指针当前所处位置。
优选地,所述将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构的步骤之后,包括:
获取标识所述环状数据结构初始位置的第二指针所处位置;
按照所述环状数据结构的预设写入数据的环绕方向,提取所述第二指针所处位置至所述第一指针所处位置之间的环状数据结构的存储数据;
按照待执行任务的需求指令,从所述存储数据中筛选特定日志信息,其中,所述特定日志信息属于存储数据中包括的所有日志信息中的任一条信息。
优选地,所述待执行任务包括排查指定应用程序的运行异常,所述按照待执行任务的需求指令,从所述存储数据中筛选特定日志信息的步骤,包括:
筛选所述存储数据中携带所述指定应用程序的进程标识符的所有日志信息;
从所述携带所述指定应用程序的进程标识符的所有日志信息中,提取携带异常日志信息对应的等级标识的日志信息,作为所述特定日志信息。
优选地,所述筛选所述存储数据中携带所述指定应用程序的进程标识符的所有日志信息的步骤之前,包括:
判断是否接收到终端调用日志数据的通讯指令,其中,所述通讯指令至少包括调用日志信息的指定终端的通讯路径和调用日志信息的信息类型,所述调用日志信息的指定终端的通讯路径用于发送所述特定日志信息至所述指定终端;
根据所述调用日志信息的信息类型,生成筛选所述存储数据中携带所述指定应用程序的进程标识符的所有日志信息的筛选指令。
本申请还提供了一种收集日志信息的装置,集成于服务器,装置包括:
调取模块,用于通过日志信息回调接口调取各应用程序运行过程中生成的日志信息,其中,所述日志信息携带标注标识符;
判断模块,用于判断指定日志信息是否携带日志收集任务指定的标识符,其中,所述指定日志信息为各应用程序运行过程中生成的日志信息中的任意一条信息;
写入模块,用于若指定日志信息携带日志收集任务指定的标识符,则将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构。
本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
本申请通过在系统内核中开辟一片固定的环形数据缓存区,通过新开发的系统服务工具对全局日志信息进行过滤和筛选,并把需要缓存的日志信息缓存于环形数据缓存区,并根据环形数据缓存区的特点通过循环覆盖的方式实现无限次重复利用,且通过环形数据缓存区的环形数据结构精准确定需要提取的缓存日志信息。
附图说明
图1是本申请一实施例的收集日志信息的方法流程示意图;
图2是本申请一实施例的收集日志信息的装置结构示意图;
图3是本申请一实施例的计算机设备内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请一实施例的收集日志信息的方法,包括:
S1:通过日志信息回调接口调取各应用程序运行过程中生成的日志信息,其中,所述日志信息携带标注标识符;
S2:判断指定日志信息是否携带日志收集任务指定的标识符,其中,所述指定日志信息为各应用程序运行过程中生成的日志信息中的任意一条信息;
S3:若是,则将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构。
本申请的收集日志信息的方法,适用于Android系统的智能设备,通过在AndroidLinux系统内核里申请一片环形数据缓存区,环形数据缓存区的大小在智能设备出厂前可通过SystemProperties控制并设置。该环形数据缓存区的特点是:缓存数据从缓存区的起始地址开始写入,每次存入数据记录存入数据后的末端位置,再次缓存的新数据将从上次缓存数据后的末端位置作为起始位置进行接续缓存,当写满该片缓存区后,缓存数据将重新从起始地址进行覆写,形成环状数据结构。通过标记环状数据结构的起始位置和末端位置,确定需要提取的日志信息所在的缓存区域,进而精准提取需要提取的日志信息。本申请通过在Frameworks中,编写一个新的服务系统Service,该Service持有Android原生日志信息的回调接口,以调取全局日志信息,并在回调过程中对原生的全局日志信息进行筛选。本申请的日志信息中携带各种标识符,以便根据标识符从缓存数据中精准筛选到需要提取的日志信息。本申请通过在系统内核中开辟一片固定的环形数据缓存区,通过新开发的系统服务工具对全局日志信息进行过滤和筛选,并把需要缓存的日志信息缓存于环形数据缓存区,并根据环形数据缓存区的特点通过循环覆盖的方式实现无限次重复利用,且通过环形数据缓存区的环形数据结构精准确定需要提取的缓存日志信息。
进一步地,所述将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构的步骤S3,包括:
S31:获取所述环形数据缓存区中标识数据写入位置的第一指针当前所处位置;
S32:将所述指定日志信息写入所述第一指针当前所处位置;
S33:获取所述指定日志信息的数据量信息;
S34:根据所述数据量信息确定所述第一指针的移动幅度,其中,所述移动幅度等于所述数据量信息对应的存储区长度;
S35:根据所述移动幅度将所述第一指针移动至所述数据量信息对应的存储区长度对应的末端位置。
本申请的环形数据缓存区设置协助缓存数据写入过程的第一指针,以实时标识缓存数据的动态变化轨迹以及形成移动幅度等数据写入过程中的参量。本申请的环状数据结构的预设写入数据的环绕方向为逆时针或顺时针方向,可自由设定。设定预设写入数据的环绕方向后,确定缓存数据的起始位置,然后通过第一指针标识存储数据对应的末端位置,沿预设写入数据的环绕方向,起始位置至末端位置即为环状数据结构对应的存储区域。上述数据量信息为数据缓存占比内存的存储量。上述数据量信息对应的存储区长度,即为环状数据结构对应的环状存储区域对应的弧长或圆环周长。
进一步地,所述根据所述移动幅度将所述第一指针移动至所述数据量信息对应的存储区长度对应的末端位置的步骤S35,包括:
S351:判断所述移动幅度是否大于所述环形数据缓存区的指定跨度,其中,所述指定跨度为开始写入数据时所述第一指针所述位置至标识所述环状数据结构初始位置的第二指针所处位置之间的存储区跨度;
S352:若是,则控制所述第一指针跨过所述第二指针,标识按照所述环状数据结构的预设写入数据的环绕方向的覆盖存储日志信息;
S353:判断是否完成指定时间内的日志信息监控与存储;
S354:若是,则将所述第二指针和所述第一指针移动至所述数据量信息对应的存储区长度对应的末端位置。
本申请通过维护两个指针变量,即上述第一指针和第二指针,以确定日志信息的当前存储区域。第一指针用于标记写入数据时的末端位置,第二指针用于标记该环形数据结构的最早数据的初始位置,通过第一指针和第二指针共同确定环形数据结构的存储区域,即第一指针至第二指针之间的区域即为环形数据结构的存储区域,以便需要该环形数据结构时及时调取。本申请的环形数据缓存区可循环利用,可通过设定时间间隔区分每次的数据写入动作,比如设定10分钟为一个存储周期,一个存储周期的数据量刚好覆盖上述环形数据缓存区,下一个存储周期会覆盖掉相邻上一存储周期的存储数据,即每个存储周期均从环形数据缓存区的初始位置进行覆盖存储,以便及时获取每个存储周期的存储数据。本申请另一实施例中,以每次的写入数据作为一个操作周期,比如预先设定触发写入数据的条件,如筛选到异常日志信息时启动写入数据,可精准地获取到每次异常状况对应的异常日志信息。本申请的环形数据缓存区在触发读操作之前,先停止写操作,以第二指针的地址作为初始位置将整个环形数据结构的数据读出。本申请实施例中当某一个写入操作执行时,写入数据的数据量信息所占用的存储区域的跨度小于等于环形数据缓存区的周长时,则根据写入数据过程中移动第一指针,固定第二指针的方式确定环形数据结构的存储区域。写入数据的数据量信息所占用的存储区域的跨度大于环形数据缓存区的周长时,则根据写入数据过程中移动第一指针,确定环形数据结构的存储区域的初始位置和末端位置,截取整个环形数据缓存区的存储数据作为待提取的日志信息,且按照环状数据结构的预设写入数据的环绕方向第二指针至第一指针之间的数据为最新数据,读取完数据后将第二指针移动至第一指针所在位置,以重新标记下一写入操作执行时,存储数据的初始位置。
进一步地,所述将所述指定日志信息写入所述第一指针当前所处位置的步骤S32,包括:
S321:扫描所述指定日志信息对应的应用程序的进程名称;
S322:按照预设映射关系确定所述进程名称对应的进程标识符;
S323:通过所述进程标识符重新命名所述指定日志信息;
S324:将重新命名的所述指定日志信息,通过Binder写入所述第一指针当前所处位置。
本申请的服务系统Service会扫描智能终端的系统中所有应用程序的进程名称,并为每一个应用程序的进程名称都创建唯一的进程标识符。建立进程名称与进程标识符之间的一一对应映射关系,以便通过进程标识符存储对应的应用程序运行时的日志信息,相比于通过进程名称直接存储对应的应用程序运行时的日志信息,所占用的内存更小,相同存储能力的环形数据缓存区,可存储更多的日志信息。本申请将待写入的日志信息通过进程标识符映射,并采用压缩算法进行压缩后,通过Binder将处理后的日志信息写入系统内核的环形数据缓存区。本申请通过进程标识符重新命名指定日志信息,使得在众多存储数据中更方便集中提取携带某一进程标识符的指定日志信息,方便数据处理。本申请通过Binder驱动在Android Linux系统内核空间创建一个数据缓存区,服务系统Service进程通过调用copy_from_user()将待写入数据复制至环形数据缓存区。
进一步地,所述将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构的步骤S3之后,包括:
S4:获取标识所述环状数据结构初始位置的第二指针所处位置;
S5:按照所述环状数据结构的预设写入数据的环绕方向,提取所述第二指针所处位置至所述第一指针所处位置之间的环状数据结构的存储数据;
S6:按照待执行任务的需求指令,从所述存储数据中筛选特定日志信息,其中,所述特定日志信息属于存储数据中包括的所有日志信息中的任一条信息。
本申请中,上述待执行任务的需求指令,包括但不限于根据日志信息等级提取日志信息、根据进程名称提取日志信息、根据异常类型提取日志信息等。上述根据日志信息等级提取日志信息,指根据配置的日志信息等级,匹配原生日志信息的等级,将原生日志信息中符合的日志信息抓取出来。上述日志信息等级包括但不限于ERROR、WARN、INFO、DEBUG、VERBOSE等。上述根据进程名称提取日志信息,指根据配置的进程名称,匹配于原生日志的进程名称,将原生日志中符合的日志信息抓取出来。上述根据异常类型提取日志信息,指根据配置的异常类型,匹配于原生日志的异常类型,将原生日志中符合的日志信息抓取出来。上述异常类型包括但不限于NullPointerException,或者IOException,或者SecurityException等等。
进一步地,所述待执行任务包括排查指定应用程序的运行异常,所述按照待执行任务的需求指令,从所述存储数据中筛选特定日志信息的步骤S6,包括:
S61:筛选所述存储数据中携带所述指定应用程序的进程标识符的所有日志信息;
S62:从所述携带所述指定应用程序的进程标识符的所有日志信息中,提取携带异常日志信息对应的等级标识的日志信息,作为所述特定日志信息。
本申请实施例以排查指定应用程序的运行异常的待执行任务为例,详细说明异常日志信息的筛选过程。本申请中根据日志信息等级提取日志信息、根据进程名称提取日志信息、根据异常类型提取日志信息等筛选规则可以一个或多个并存,对应的日志信息可能同时存储于同一个环形数据结构中,环形数据结构提取出来后,可根据待执行任务的属性,进行数据再筛选。
进一步地,所述筛选所述存储数据中携带所述指定应用程序的进程标识符的所有日志信息的步骤S61之前,包括:
S601:判断是否接收到终端调用日志数据的通讯指令,其中,所述通讯指令至少包括调用日志信息的指定终端的通讯路径和调用日志信息的信息类型,所述调用日志信息的指定终端的通讯路径用于发送所述特定日志信息至所述指定终端;
S602:根据所述调用日志信息的信息类型,生成筛选所述存储数据中携带所述指定应用程序的进程标识符的所有日志信息的筛选指令。
本申请中,当开发人员需要分析异常日志信息时,可通过智能设备与服务器通讯的方式,将环形数据缓存区的数据全部取出并发送给服务器,以便通过服务器转发至请求终端。
参照图2,本申请一实施例的收集日志信息的装置,包括:
调取模块1,用于通过日志信息回调接口调取各应用程序运行过程中生成的日志信息,其中,所述日志信息携带标注标识符;
判断模块2,用于判断指定日志信息是否携带日志收集任务指定的标识符,其中,所述指定日志信息为各应用程序运行过程中生成的日志信息中的任意一条信息;
写入模块3,用于若指定日志信息携带日志收集任务指定的标识符,则将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构。
本申请的收集日志信息的方法,适用于Android系统的智能设备,通过在AndroidLinux系统内核里申请一片环形数据缓存区,环形数据缓存区的大小在智能设备出厂前可通过SystemProperties控制并设置。该环形数据缓存区的特点是:缓存数据从缓存区的起始地址开始写入,每次存入数据记录存入数据后的末端位置,再次缓存的新数据将从上次缓存数据后的末端位置作为起始位置进行接续缓存,当写满该片缓存区后,缓存数据将重新从起始地址进行覆写,形成环状数据结构。通过标记环状数据结构的起始位置和末端位置,确定需要提取的日志信息所在的缓存区域,进而精准提取需要提取的日志信息。本申请通过在Frameworks中,编写一个新的服务系统Service,该Service持有Android原生日志信息的回调接口,以调取全局日志信息,并在回调过程中对原生的全局日志信息进行筛选。本申请的日志信息中携带各种标识符,以便根据标识符从缓存数据中精准筛选到需要提取的日志信息。本申请通过在系统内核中开辟一片固定的环形数据缓存区,通过新开发的系统服务工具对全局日志信息进行过滤和筛选,并把需要缓存的日志信息缓存于环形数据缓存区,并根据环形数据缓存区的特点通过循环覆盖的方式实现无限次重复利用,且通过环形数据缓存区的环形数据结构精准确定需要提取的缓存日志信息。
进一步地,写入模块3,包括:
第一获取单元,用于获取所述环形数据缓存区中标识数据写入位置的第一指针当前所处位置;
写入单元,用于将所述指定日志信息写入所述第一指针当前所处位置;
第二获取单元,用于获取所述指定日志信息的数据量信息;
确定单元,用于根据所述数据量信息确定所述第一指针的移动幅度,其中,所述移动幅度等于所述数据量信息对应的存储区长度;
移动单元,用于根据所述移动幅度将所述第一指针移动至所述数据量信息对应的存储区长度对应的末端位置。
本申请的环形数据缓存区设置协助缓存数据写入过程的第一指针,以实时标识缓存数据的动态变化轨迹以及形成移动幅度等数据写入过程中的参量。本申请的环状数据结构的预设写入数据的环绕方向为逆时针或顺时针方向,可自由设定。设定预设写入数据的环绕方向后,确定缓存数据的起始位置,然后通过第一指针标识存储数据对应的末端位置,沿预设写入数据的环绕方向,起始位置至末端位置即为环状数据结构对应的存储区域。上述数据量信息为数据缓存占比内存的存储量。上述数据量信息对应的存储区长度,即为环状数据结构对应的环状存储区域对应的弧长或圆环周长。
进一步地,移动单元,包括:
第一判断子单元,用于判断所述移动幅度是否大于所述环形数据缓存区的指定跨度,其中,所述指定跨度为开始写入数据时所述第一指针所述位置至标识所述环状数据结构初始位置的第二指针所处位置之间的存储区跨度;
控制子单元,用于若所述移动幅度大于所述环形数据缓存区的指定跨度,则控制所述第一指针跨过所述第二指针,标识按照所述环状数据结构的预设写入数据的环绕方向的覆盖存储日志信息;
第二判断子单元,用于判断是否完成指定时间内的日志信息监控与存储;
移动子单元,用于若完成指定时间内的日志信息监控与存储,则将所述第二指针和所述第一指针移动至所述数据量信息对应的存储区长度对应的末端位置。
本申请通过维护两个指针变量,即上述第一指针和第二指针,以确定日志信息的当前存储区域。第一指针用于标记写入数据时的末端位置,第二指针用于标记该环形数据结构的最早数据的初始位置,通过第一指针和第二指针共同确定环形数据结构的存储区域,即第一指针至第二指针之间的区域即为环形数据结构的存储区域,以便需要该环形数据结构时及时调取。本申请的环形数据缓存区可循环利用,可通过设定时间间隔区分每次的数据写入动作,比如设定10分钟为一个存储周期,一个存储周期的数据量刚好覆盖上述环形数据缓存区,下一个存储周期会覆盖掉相邻上一存储周期的存储数据,即每个存储周期均从环形数据缓存区的初始位置进行覆盖存储,以便及时获取每个存储周期的存储数据。本申请另一实施例中,以每次的写入数据作为一个操作周期,比如预先设定触发写入数据的条件,如筛选到异常日志信息时启动写入数据,可精准地获取到每次异常状况对应的异常日志信息。本申请的环形数据缓存区在触发读操作之前,先停止写操作,以第二指针的地址作为初始位置将整个环形数据结构的数据读出。本申请实施例中当某一个写入操作执行时,写入数据的数据量信息所占用的存储区域的跨度小于等于环形数据缓存区的周长时,则根据写入数据过程中移动第一指针,固定第二指针的方式确定环形数据结构的存储区域。写入数据的数据量信息所占用的存储区域的跨度大于环形数据缓存区的周长时,则根据写入数据过程中移动第一指针,确定环形数据结构的存储区域的初始位置和末端位置,截取整个环形数据缓存区的存储数据作为待提取的日志信息,且按照环状数据结构的预设写入数据的环绕方向第二指针至第一指针之间的数据为最新数据,读取完数据后将第二指针移动至第一指针所在位置,以重新标记下一写入操作执行时,存储数据的初始位置。
进一步地,写入单元,包括:
扫描子单元,用于扫描所述指定日志信息对应的应用程序的进程名称;
确定子单元,用于按照预设映射关系确定所述进程名称对应的进程标识符;
命名子单元,用于通过所述进程标识符重新命名所述指定日志信息;
写入子单元,用于将重新命名的所述指定日志信息,通过Binder写入所述第一指针当前所处位置。
本申请的服务系统Service会扫描智能终端的系统中所有应用程序的进程名称,并为每一个应用程序的进程名称都创建唯一的进程标识符。建立进程名称与进程标识符之间的一一对应映射关系,以便通过进程标识符存储对应的应用程序运行时的日志信息,相比于通过进程名称直接存储对应的应用程序运行时的日志信息,所占用的内存更小,相同存储能力的环形数据缓存区,可存储更多的日志信息。本申请将待写入的日志信息通过进程标识符映射,并采用压缩算法进行压缩后,通过Binder将处理后的日志信息写入系统内核的环形数据缓存区。本申请通过进程标识符重新命名指定日志信息,使得在众多存储数据中更方便集中提取携带某一进程标识符的指定日志信息,方便数据处理。本申请通过Binder驱动在Android Linux系统内核空间创建一个数据缓存区,服务系统Service进程通过调用copy_from_user()将待写入数据复制至环形数据缓存区。
进一步地,收集日志信息的装置,包括:
获取模块,用于获取标识所述环状数据结构初始位置的第二指针所处位置;
提取模块,用于按照所述环状数据结构的预设写入数据的环绕方向,提取所述第二指针所处位置至所述第一指针所处位置之间的环状数据结构的存储数据;
筛选模块,用于按照待执行任务的需求指令,从所述存储数据中筛选特定日志信息,其中,所述特定日志信息属于存储数据中包括的所有日志信息中的任一条信息。
本申请中,上述待执行任务的需求指令,包括但不限于根据日志信息等级提取日志信息、根据进程名称提取日志信息、根据异常类型提取日志信息等。上述根据日志信息等级提取日志信息,指根据配置的日志信息等级,匹配原生日志信息的等级,将原生日志信息中符合的日志信息抓取出来。上述日志信息等级包括但不限于ERROR、WARN、INFO、DEBUG、VERBOSE等。上述根据进程名称提取日志信息,指根据配置的进程名称,匹配于原生日志的进程名称,将原生日志中符合的日志信息抓取出来。上述根据异常类型提取日志信息,指根据配置的异常类型,匹配于原生日志的异常类型,将原生日志中符合的日志信息抓取出来。上述异常类型包括但不限于NullPointerException,或者IOException,或者SecurityException等等。
进一步地,所述待执行任务包括排查指定应用程序的运行异常,筛选模块,包括:
筛选单元,用于筛选所述存储数据中携带所述指定应用程序的进程标识符的所有日志信息;
提取单元,用于从所述携带所述指定应用程序的进程标识符的所有日志信息中,提取携带异常日志信息对应的等级标识的日志信息,作为所述特定日志信息。
本申请实施例以排查指定应用程序的运行异常的待执行任务为例,详细说明异常日志信息的筛选过程。本申请中根据日志信息等级提取日志信息、根据进程名称提取日志信息、根据异常类型提取日志信息等筛选规则可以一个或多个并存,对应的日志信息可能同时存储于同一个环形数据结构中,环形数据结构提取出来后,可根据待执行任务的属性,进行数据再筛选。
进一步地,筛选模块,包括:
判断单元,用于判断是否接收到服务器发送的调用日志数据的通讯指令,其中,所述通讯指令至少包括调用日志信息的指定终端的通讯路径和调用日志信息的信息类型,所述调用日志信息的指定终端的通讯路径用于发送所述特定日志信息至所述指定终端;
生成单元,用于根据所述调用日志信息的信息类型,生成筛选所述存储数据中携带所述指定应用程序的进程标识符的所有日志信息的筛选指令。
本申请中,当开发人员需要分析异常日志信息时,可通过智能设备与服务器通讯的方式,将环形数据缓存区的数据全部取出并发送给服务器,以便通过服务器转发至请求终端。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储收集日志信息的过程需要的所有数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现收集日志信息的方法。
上述处理器执行上述收集日志信息的方法,包括:通过日志信息回调接口调取各应用程序运行过程中生成的日志信息,其中,所述日志信息携带标注标识符;判断指定日志信息是否携带日志收集任务指定的标识符,其中,所述指定日志信息为各应用程序运行过程中生成的日志信息中的任意一条信息;若是,则将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构。
上述计算机设备,通过在系统内核中开辟一片固定的环形数据缓存区,通过新开发的系统服务工具对全局日志信息进行过滤和筛选,并把需要缓存的日志信息缓存于环形数据缓存区,并根据环形数据缓存区的特点通过循环覆盖的方式实现无限次重复利用,且通过环形数据缓存区的环形数据结构精准确定需要提取的缓存日志信息。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现收集日志信息的方法,包括:通过日志信息回调接口调取各应用程序运行过程中生成的日志信息,其中,所述日志信息携带标注标识符;判断指定日志信息是否携带日志收集任务指定的标识符,其中,所述指定日志信息为各应用程序运行过程中生成的日志信息中的任意一条信息;若是,则将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构。
上述计算机可读存储介质,通过在系统内核中开辟一片固定的环形数据缓存区,通过新开发的系统服务工具对全局日志信息进行过滤和筛选,并把需要缓存的日志信息缓存于环形数据缓存区,并根据环形数据缓存区的特点通过循环覆盖的方式实现无限次重复利用,且通过环形数据缓存区的环形数据结构精准确定需要提取的缓存日志信息。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种收集日志信息的方法,其特征在于,包括:
通过日志信息回调接口调取各应用程序运行过程中生成的日志信息,其中,所述日志信息携带标注标识符;
判断指定日志信息是否携带日志收集任务指定的标识符,其中,所述指定日志信息为各应用程序运行过程中生成的日志信息中的任意一条信息;
若是,则将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构。
2.根据权利要求1所述的收集日志信息的方法,其特征在于,所述将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构的步骤,包括:
获取所述环形数据缓存区中标识数据写入位置的第一指针当前所处位置;
将所述指定日志信息写入所述第一指针当前所处位置;
获取所述指定日志信息的数据量信息;
根据所述数据量信息确定所述第一指针的移动幅度,其中,所述移动幅度等于所述数据量信息对应的存储区长度;
根据所述移动幅度将所述第一指针移动至所述数据量信息对应的存储区长度对应的末端位置。
3.根据权利要求2所述的收集日志信息的方法,其特征在于,所述根据所述移动幅度将所述第一指针移动至所述数据量信息对应的存储区长度对应的末端位置的步骤,包括:
判断所述移动幅度是否大于所述环形数据缓存区的指定跨度,其中,所述指定跨度为开始写入数据时所述第一指针所述位置至标识所述环状数据结构初始位置的第二指针所处位置之间的存储区跨度;
若是,则控制所述第一指针跨过所述第二指针,标识按照所述环状数据结构的预设写入数据的环绕方向的覆盖存储日志信息;
判断是否完成指定时间内的日志信息监控与存储;
若是,则将所述第二指针和所述第一指针移动至所述数据量信息对应的存储区长度对应的末端位置。
4.根据权利要求2所述的收集日志信息的方法,其特征在于,所述将所述指定日志信息写入所述第一指针当前所处位置的步骤,包括:
扫描所述指定日志信息对应的应用程序的进程名称;
按照预设映射关系确定所述进程名称对应的进程标识符;
通过所述进程标识符重新命名所述指定日志信息;
将重新命名的所述指定日志信息,通过Binder写入所述第一指针当前所处位置。
5.根据权利要求2所述的收集日志信息的方法,其特征在于,所述将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构的步骤之后,包括:
获取标识所述环状数据结构初始位置的第二指针所处位置;
按照所述环状数据结构的预设写入数据的环绕方向,提取所述第二指针所处位置至所述第一指针所处位置之间的环状数据结构的存储数据;
按照待执行任务的需求指令,从所述存储数据中筛选特定日志信息,其中,所述特定日志信息属于存储数据中包括的所有日志信息中的任一条信息。
6.根据权利要求5所述的收集日志信息的方法,其特征在于,所述待执行任务包括排查指定应用程序的运行异常,所述按照待执行任务的需求指令,从所述存储数据中筛选特定日志信息的步骤,包括:
筛选所述存储数据中携带所述指定应用程序的进程标识符的所有日志信息;
从所述携带所述指定应用程序的进程标识符的所有日志信息中,提取携带异常日志信息对应的等级标识的日志信息,作为所述特定日志信息。
7.根据权利要求6所述的收集日志信息的方法,其特征在于,所述筛选所述存储数据中携带所述指定应用程序的进程标识符的所有日志信息的步骤之前,包括:
判断是否接收到服务器发送的调用日志数据的通讯指令,其中,所述通讯指令至少包括调用日志信息的指定终端的通讯路径和调用日志信息的信息类型,所述调用日志信息的指定终端的通讯路径用于发送所述特定日志信息至所述指定终端;
根据所述调用日志信息的信息类型,生成筛选所述存储数据中携带所述指定应用程序的进程标识符的所有日志信息的筛选指令。
8.一种收集日志信息的装置,其特征在于,包括:
调取模块,用于通过日志信息回调接口调取各应用程序运行过程中生成的日志信息,其中,所述日志信息携带标注标识符;
判断模块,用于判断指定日志信息是否携带日志收集任务指定的标识符,其中,所述指定日志信息为各应用程序运行过程中生成的日志信息中的任意一条信息;
写入模块,用于若指定日志信息携带日志收集任务指定的标识符,则将所述指定日志信息写入系统内核中预设的环形数据缓存区,形成收集的日志信息对应的环状数据结构。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010676027.8A CN111813630A (zh) | 2020-07-14 | 2020-07-14 | 收集日志信息的方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010676027.8A CN111813630A (zh) | 2020-07-14 | 2020-07-14 | 收集日志信息的方法、装置和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111813630A true CN111813630A (zh) | 2020-10-23 |
Family
ID=72864754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010676027.8A Pending CN111813630A (zh) | 2020-07-14 | 2020-07-14 | 收集日志信息的方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813630A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527617A (zh) * | 2020-12-17 | 2021-03-19 | 四川长虹电器股份有限公司 | 一种安卓电视故障日志记录方法 |
CN112965833A (zh) * | 2021-02-23 | 2021-06-15 | 新华三信息安全技术有限公司 | 日志处理方法及装置 |
CN115629944A (zh) * | 2022-12-21 | 2023-01-20 | 杭州谐云科技有限公司 | 一种容器日志的处理方法和日志处理系统 |
CN117407249A (zh) * | 2023-12-12 | 2024-01-16 | 苏州元脑智能科技有限公司 | 驱动日志管理方法、装置、系统、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949725A (zh) * | 2006-11-22 | 2007-04-18 | 华为技术有限公司 | 一种日志消息的过滤系统及方法 |
US20130325913A1 (en) * | 2012-06-05 | 2013-12-05 | Hitachi, Ltd. | Log management system and program |
CN109388622A (zh) * | 2018-11-01 | 2019-02-26 | 郑州云海信息技术有限公司 | 一种日志信息处理方法、装置、设备及可读存储介质 |
CN109508246A (zh) * | 2018-06-25 | 2019-03-22 | 广州多益网络股份有限公司 | 日志记录方法、系统和计算机可读存储介质 |
-
2020
- 2020-07-14 CN CN202010676027.8A patent/CN111813630A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949725A (zh) * | 2006-11-22 | 2007-04-18 | 华为技术有限公司 | 一种日志消息的过滤系统及方法 |
US20130325913A1 (en) * | 2012-06-05 | 2013-12-05 | Hitachi, Ltd. | Log management system and program |
CN109508246A (zh) * | 2018-06-25 | 2019-03-22 | 广州多益网络股份有限公司 | 日志记录方法、系统和计算机可读存储介质 |
CN109388622A (zh) * | 2018-11-01 | 2019-02-26 | 郑州云海信息技术有限公司 | 一种日志信息处理方法、装置、设备及可读存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527617A (zh) * | 2020-12-17 | 2021-03-19 | 四川长虹电器股份有限公司 | 一种安卓电视故障日志记录方法 |
CN112965833A (zh) * | 2021-02-23 | 2021-06-15 | 新华三信息安全技术有限公司 | 日志处理方法及装置 |
CN112965833B (zh) * | 2021-02-23 | 2023-07-14 | 新华三信息安全技术有限公司 | 日志处理方法及装置 |
CN115629944A (zh) * | 2022-12-21 | 2023-01-20 | 杭州谐云科技有限公司 | 一种容器日志的处理方法和日志处理系统 |
CN117407249A (zh) * | 2023-12-12 | 2024-01-16 | 苏州元脑智能科技有限公司 | 驱动日志管理方法、装置、系统、电子设备及存储介质 |
CN117407249B (zh) * | 2023-12-12 | 2024-03-01 | 苏州元脑智能科技有限公司 | 驱动日志管理方法、装置、系统、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111813630A (zh) | 收集日志信息的方法、装置和计算机设备 | |
CN110209652B (zh) | 数据表迁移方法、装置、计算机设备和存储介质 | |
CN107171825B (zh) | 一种终端的重复日志过滤方法 | |
CN108427613B (zh) | 异常接口定位方法、装置、计算机设备和存储介质 | |
US20160092248A1 (en) | Hook framework | |
CN110069572A (zh) | 基于大数据平台的hive任务调度方法、装置、设备及存储介质 | |
CN109800154B (zh) | 测试数据的加载方法、装置、计算机设备及存储介质 | |
CN115562690B (zh) | 基于Docker容器的算法服务处理方法、装置及介质 | |
US10185559B2 (en) | Documentation notification | |
CN111881473A (zh) | 隐私文件保护方法、装置、计算机设备和可读存储介质 | |
CN112363937A (zh) | 差异覆盖率测试方法、装置、计算机设备和存储介质 | |
CN112597016A (zh) | 自动化测试脚本的录制方法、装置、设备及存储介质 | |
CN109254765A (zh) | 定时任务管理方法、装置、计算机设备及存储介质 | |
CN117130941B (zh) | 基于浏览器插件的接口自动化方法、系统、设备及介质 | |
CN113721973A (zh) | 配置文件生成方法、装置、设备及介质 | |
CN113835713A (zh) | 源码包下载方法、装置、计算机设备和存储介质 | |
WO2017076244A1 (zh) | 一种动态修复应用程序的方法、装置及相关系统 | |
CN113448793A (zh) | 一种兼容多操作系统的系统监控方法及装置 | |
CN116841653A (zh) | 运维作业的执行方法、装置、处理器及电子设备 | |
CN109429100B (zh) | 一种页面路径的存储方法、装置及系统 | |
CN116610551A (zh) | 代码覆盖率计算方法、装置、设备和介质 | |
CN113886262A (zh) | 软件自动化测试方法、装置、计算机设备和存储介质 | |
CN109561121B (zh) | 监控部署的方法及装置 | |
CN111857752A (zh) | 一种PostgreSQL数据库安装方法、装置及设备 | |
CN110888807A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201023 |
|
RJ01 | Rejection of invention patent application after publication |