一种日志优化方法、装置、设备及存储介质与流程

文档序号:31697322发布日期:2022-10-01 06:07阅读:38来源:国知局
一种日志优化方法、装置、设备及存储介质与流程

1.本公开涉及信息记录技术领域,尤其涉及一种日志优化方法、装置、设备及存储介质。


背景技术:

2.安卓(android)日志记录系统是系统进程中应用日志输出进程(logd)维护的一组结构化环形缓冲区,这组可用的缓冲区是固定的,并由系统定义。目前通常使用日志抓取命令行工具(logcat)从其中读取日志,在一些情况下,开发人员无法通过输出的日志内容来定位该日志具体是关于哪个应用的,对开发人员根据日志记录来分析故障问题造成了困扰。


技术实现要素:

3.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种日志优化方法、装置、设备及存储介质。
4.第一方面,本公开提供了一种日志优化方法,包括:
5.监测到日志写入,所述日志中包括资源调度单位的信息;
6.从所述日志中获取所述信息;
7.根据当前运行的应用程序与所述信息的对应关系,确定所述信息对应的应用程序的信息;
8.将所述应用程序的信息写入所述日志。
9.可选的,所述根据当前运行的应用程序与所述信息的对应关系,确定所述信息对应的应用程序的信息,包括:
10.获取当前运行的应用程序的列表,所述列表中包括当前运行的用户进程的信息,所述用户进程的信息中包括用户进程号和用户应用程序相关的信息;
11.在所述列表中查找与所述信息相匹配的第一进程号;
12.响应于查找到的所述第一进程号,基于所述第一进程号对应的用户应用程序相关的信息,确定所述信息对应的应用程序的信息。
13.可选的,所述方法还包括:
14.响应于未查找到所述第一进程号,获取全部进程的信息,所述全部进程为系统当前运行的全部进程,所述全部进程的信息中包括进程号和线程号,所述线程号所属对应的进程号;
15.将所述信息与所述进程号和所述线程号进行匹配;
16.基于匹配得到的第二进程号,根据所述第二进程号获取对应的第二应用程序相关的信息,根据所述第二应用程序相关的信息确定所述信息对应的应用程序的信息。
17.可选的,所述根据所述第二进程号获取对应的第二应用程序相关的信息,包括:
18.根据所述第二进程号获取对应的第二进程的信息,所述第二进程的信息包括用户
标识号和进程名称;
19.确定所述用户标识号是否小于预设阈值;
20.响应于所述用户标识号小于预设阈值,将所述进程名称作为所述第二应用程序相关的信息。
21.可选的,所述方法还包括:
22.响应于所述用户标识号大于或等于预设阈值,根据所述用户标识号获取对应的应用程序包信息;
23.将所述应用程序包信息作为所述第二应用程序相关的信息。
24.可选的,所述将所述应用程序包信息作为所述第二应用程序相关的信息之前,还包括:
25.确定所述应用程序包信息的分组个数;
26.响应于所述分组个数为一个,将所述应用程序包信息作为所述第二应用程序相关的信息。
27.可选的,所述方法还包括:
28.响应于所述分组个数为多个,将多组应用程序包信息分别与所述进程名称进行匹配;
29.将相匹配的一组应用程序包信息作为所述第二应用程序相关的信息。
30.第二方面,本公开提供了一种日志优化装置,包括:
31.监测模块,用于监测日志写入,所述日志中包括资源调度单位的信息;
32.获取模块,用于从所述日志中获取所述信息;
33.处理模型,用于根据当前运行的应用程序与所述信息的对应关系,确定所述信息对应的应用程序的信息;
34.写入模块,用于将所述应用程序的信息写入所述日志。
35.第三方面,本公开提供了一种电子设备,包括:
36.存储器;
37.处理器;以及
38.计算机程序;
39.其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如第一方面所述的方法。
40.第四方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法。
41.本公开实施例提供的技术方案与现有技术相比具有如下优点:
42.本公开实施例提供的日志优化方法、装置、设备及存储介质,通过实时监测日志写入,并获取日志中资源调度单位的信息,即时根据该信息来确定输出日志的应用程序,然后将输出日志的应用程序的信息写入日志中,完成对日志的优化,由此可以使开发人员在拿到日志后就能根据日志判断输出日志的应用程序,避免了因拿到日志时对应的进程死掉或不存在,以及线程输出的日志无法对应到具体应用程序而导致的查找不到输出日志的应用程序的问题,有利于开发人员使用日志分析故障问题。
附图说明
43.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
44.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
45.图1为本公开实施例提供的一种日志优化方法流程图;
46.图2是本公开实施例提供的确定日志对应的应用程序信息的方法流程图;
47.图3为本公开实施例提供的进程信息的示意图;
48.图4为本公开提供的一种日志优化装置的结构示意图;
49.图5为本公开实施例提供的电子设备的结构示意图。
具体实施方式
50.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
51.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
52.安卓(android)日志记录系统是系统进程logd维护的一组结构化环形缓冲区,这组可用的缓冲区是固定的,并由系统定义。日志体现的是某一时段的运行环境的输出,一般日志的输出格式为:日期时间日志级别标签(tag)[进程号/线程号]日志内容。其中开发人员在拿到日志分析问题时,存在一些情况下无法分辨日志是哪个应用输出,例如遇到安全问题去进行溯源分析(如某一次攻击)并查找线索的时候,对于可疑的日志及应用行为,因为日志有时只输出了线程号,之后在分析地过程中可能进行该日志行为地进程已经死了,或者用进程状态指令(ps,process status)查看进程时进程已经不存在了,或者线程地日志输出无法对应到具体某个应用,所以不能确定是哪个应用输出的,对安全分析造成较大的困扰。针对上述问题,本公开实施例提供了一种日志优化方法,下面结合具体的实施例对该方法进行介绍。
[0053]
图1为本公开实施例提供的一种日志优化方法流程图。该方法可以由日志优化装置执行,该日志优化装置可以采用软件和/或硬件的方式实现,该日志优化装置可配置于电子设备中,例如服务器或终端,其中,终端具体包括手机、电脑或平板电脑等。该方法包括的具体步骤如下:
[0054]
s101、监测到日志写入,日志中包括资源调度单位的信息。
[0055]
在日志写入后,输出该日志的进程可能会出现死掉或者不存在了的情况,这种情况可能会导致无法分析写入的日志是哪个应用程序输出的,因此需要实时监测日志写入,以便在写入日志时及时对写入的日志进行优化,如此即可避免上述情况而导致的无法分析日志对应的输出程序。
[0056]
资源调度单位包括进程或线程,示例性的,一般日志的输出格式为:日期时间日志
级别tag[进程号/线程号]日志内容,例如日志:04-2820:04:48.227 d/processstate(3890):binder ioctl to enable onewayspam detection failed:invalid argument,其中04-28表示日期,20:04:48表示时间,.227表示日志级别,d/processstate表示标签,即tag,(3890)表示[进程号/线程号],binder ioctl to enable onewayspam detection failed:invalid argument为日志内容。日志中[进程号/线程号]指的就是进程的id或线程的id,即上述例子中的3890。由于输出的[进程号/线程号]是一串字符,无法通过这串字符来判断其对应的是进程还是线程,因此需要对资源调度单位的信息进行分析查找,找到其对应的应用程序。
[0057]
s102、从日志中获取所述信息。
[0058]
从日志中获取资源调度单位的信息,即示例中的[进程号/线程号],以便后续通过[进程号/线程号]来确定输出该日志的应用程序。
[0059]
s103、根据当前运行的应用程序与所述信息的对应关系,确定所述信息对应的应用程序的信息。
[0060]
示例性的,可以根据获取的源调度单位的信息,即[进程号/线程号],找到[进程号/线程号]所对应的应用程序,并确定该应用程序的信息,该应用程序的信息例如可以是应用包名或程序名。
[0061]
s104、将应用程序的信息写入日志。
[0062]
将应用程序的信息写入到日志的输出格式中,例如,将[进程号/线程号]对应的应用程序的应用包名或程序名写入到日志的输出格式中,优化后日志的输出格式为:日期时间日志级别tag[进程号/线程号]应用包名或程序名日志内容。
[0063]
本公开实施例通过实时监测日志写入,并获取日志中资源调度单位的信息,即时根据该信息来确定输出日志的应用程序,然后将输出日志的应用程序的信息写入日志中,完成对日志的优化,由此可以使开发人员在拿到日志后就能根据日志判断输出日志的应用程序,避免了因拿到日志时对应的进程死掉或不存在,以及线程输出的日志无法对应到具体应用程序而导致的查找不到输出日志的应用程序的问题,有利于开发人员使用日志分析故障问题。
[0064]
图2是本公开实施例提供的确定日志对应的应用程序信息的方法流程图。在上述实施例的基础上,根据当前运行的应用程序与所述信息的对应关系,确定所述信息对应的应用程序的信息,具体包括如下步骤:
[0065]
s201、获取当前运行的应用程序的列表,列表中包括当前运行的用户进程的信息,用户进程的信息中包括用户进程号和用户应用程序相关的信息。
[0066]
以android系统为例,在获取到日志中的[进程号/线程号]后,在android的包管理服务中获取当前系统的运行应用程序的列表,该列表中包括用户级别的应用程序拉起的进程的信息,即用户进程的信息。该列表中进程的信息包括进程号和应用程序的应用包名等信息。
[0067]
s202、在列表中查找与所述信息相匹配的第一进程号。
[0068]
在当前运行应用程序的列表中查找与日志中获取的[进程号/线程号]相匹配的第一进程号,例如上述日志:04-28 20:04:48.227 d/processstate(3890):binder ioctl to enable onewayspam detection failed:invalid argument。[进程号/线程号]为3890,则
找到列表中同样是3890的第一进程号。
[0069]
s203、响应于查找到的第一进程号,基于第一进程号对应的用户应用程序相关的信息,确定所述信息对应的应用程序的信息。
[0070]
响应于在列表中找到了与所述信息相匹配的第一进程号,查找拉起第一进程号的应用程序的应用包名,将该应用包名确定为所述信息对应的应用程序的信息,以便后续将该应用包名写入日志中。
[0071]
s204、响应于未查找到第一进程号,获取全部进程的信息,全部进程为系统当前运行的全部进程,全部进程的信息中包括进程号和线程号,线程号所属对应的进程号。
[0072]
若未在列表中找到与所述信息相匹配的第一进程号,则说明日志可能不是应用程序输出的,存在以下几种情况:通过可执行文件运行起来的进程(如system/bin/servicemanager等);线程,是在进程中创建的线程(包括在应用(app)进程中创建的和在通过可执行文件运行起来的进程中创建情况),即日志中[进程号/线程号]是线程号;内核(kernel)中的进程或线程。
[0073]
响应于在列表中未找到与所述信息相匹配的第一进程号,通过ps命令(ps命令用于显示系统进程的状态,显示系统全部进程状态的命令具体为ps-at)获取系统中当前运行的全部进程的信息,全部进程的信息中包括进程的进程号,以及进程下属的线程的线程号,即线程的线程号所属进程对应的进程号。
[0074]
s205、将所述信息与进程号和线程号进行匹配。
[0075]
将日志中[进程号/线程号]与获取的全部进程信息中的进程号和线程号进行匹配,例如,[进程号/线程号]所示的字符为线程号,具体为1234,以线程号1234为参数,在进程列表中查找其所属的进程的状态信息,并获取该进程的进程号,例如可以由进程状态信息:{u0_a156 31494 1234 707 16304528 190444 binder_thread_read 0 s binder:31494_c}(其中u0_a156为用户标识号(user id),31494为进程号,1234为线程号,707表示进程级别,16304528 190444 binder_thread_read 0s binder:31494_c表示运行状态),确定线程号为1234的线程对应的进程的进程号为31494,进程号31494即为匹配得到的第二进程号。
[0076]
s206、基于匹配得到的第二进程号,根据第二进程号获取对应的第二应用程序相关的信息,根据第二应用程序相关的信息确定所述信息对应的应用程序的信息。
[0077]
根据匹配得到的第二进程号,确定第二进程号的进程所对应的第二应用程序,并获取第二应用程序相关的信息,第二应用程序相关的信息中包括第二应用程序的应用包名或程序名,具体的,若第二应用程序为非系统应用,则确定第二应用程序的应用包名为所述信息对应的应用程序的信息,若若第二应用程序为系统应用程序,则确定第二应用程序的程序名为所述信息对应的应用程序的信息。
[0078]
在上述实施例的基础上,根据第二进程号获取对应的第二应用程序相关的信息有多种情况,不同的情况对应有不同的实施方式,具体的实时方式包括:根据第二进程号获取对应的第二进程的信息,第二进程的信息包括用户标识号和进程名称;确定用户标识号是否小于预设阈值。
[0079]
其中一种情况对应的实施方式,响应于用户标识号小于预设阈值,将进程名称作为第二应用程序相关的信息。
[0080]
以匹配得到的第二进程号是31494为例,将第二进程号31494作为参数,通过进程信息抓取命令(cat/proc/31494/status)查看第二进程的具体状态信息,参照图3,图3为本公开实施例提供的进程信息的示意图,其中包括进程的名称301以及用户标识号302(即uid,userid),通过确定用户标识号302是否小于预设阈值,来确定第二进程对应的第二应用程序是否是系统应用程序。
[0081]
在android系统中,uid用于标识一个应用程序,uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变,一个应用程序只能有一个uid。根据android系统分配uid的规则,为非系统应用分配的uid大于或等于10000,系统应用的分配的uid小于10000,因此可以将预设阈值设置为10000。
[0082]
响应于uid小于10000,此时第二进程是系统应用程序,第二进程是的进程名称301即是第二应用程序的应用程序名,由此可以将进程名称301作为第二应用程序相关的信息,以便后续将进程名称写入日志中。此外,通过可执行文件运行起来的进程以及内核(kernel)中的进程或线程,对应查找到的uid均会小于10000,进程名称即输出日志的应用程序的名称,因此也将进程名称作为应用程序名写入日志中。
[0083]
另一种情况对应的实施方式包括:响应于用户标识号大于或等于预设阈值,根据用户标识号获取对应的应用程序包信息;将应用程序包信息作为第二应用程序相关的信息。
[0084]
示例性的,响应于uid小于10000,此时第二进程是非系统应用程序,根据uid在包管理服务中获取第二应用程序的应用程序包信息,应用程序包信息中包括第二应用程序的应用包名,将应用程序包信息作为第二应用程序相关的信息,以便后续将第二应用程序的应用包名写入日志中。
[0085]
在这种实施方式的情况下,在将应用程序包信息作为第二应用程序相关的信息之前,还包括:确定应用程序包信息的分组个数;响应于分组个数为一个,将应用程序包信息作为第二应用程序相关的信息。
[0086]
在android系统中,每一个安卓应用程序包(apk,android application package)在安装到设备上的时候,都会被分配到一个属于自己的统一的操作系统内核(linux)uid,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。通过共享用户标识号的方式(shareuserid)可以让拥有同一个uid的多个应用运行在统一进程,或者不同进程,多个相同uid的应用可以互相随意访问数据。因此在uid是共享uid的情况下,该uid对应的应用程序有多个,根据该uid在包管理服务中查找返回的应用程序包信息也分为多组。在uid不是共享uid的情况下,根据该uid在包管理服务中查找返回的应用程序包信息则为一组。
[0087]
根据uid在包管理服务中获取对应的应用程序包信息时,确定应用程序包信息的分组个数,若分组个数为一个,则代表该uid不是共享uid。响应于分组个数为一个,以该组应用程序包信息作为第二应用程序相关的信息,以便后续将该组应用程序包信息中的应用包名写入日志中。
[0088]
对应的,该方法还包括:响应于分组个数为多个,将多组应用程序包信息分别与进程名称进行匹配;将相匹配的一组应用程序包信息作为第二应用程序相关的信息。
[0089]
若应用程序包信息的分组个数为多个,则代表该uid是共享uid,此时uid对应的应
用程序有多个,无法确定日志是其中哪个应用程序输出的,因此需要将多组应用程序包信息中每组的应用包名分别与进程名称进行匹配,应用包名与进程名称相匹配的一组应用程序包信息就是输出日志的第二应用程序的应用程序包信息,将相匹配的一组应用程序包信息作为第二应用程序相关的信息,以便后续将相匹配的一组应用程序包信息中的应用包名写入日志中。
[0090]
本公开实施例通过将调度资源单位的信息对应的多种情况,分别实施不同的查找分析方式去确定与调度资源单位的信息对应的应用程序,从而确定输出日志的应用程序的信息,以支持后续步骤进行日志优化,避免出现查找不到输出日志的应用程序信息的情况,提高了查找输出日志的应用程序方式的灵活性。
[0091]
图4为本公开提供的一种日志优化装置的结构示意图,日志优化装置400包括:监测模块401,用于监测日志写入,日志中包括资源调度单位的信息;获取模块402,用于从日志中获取所述信息;处理模型403,用于根据当前运行的应用程序与所述信息的对应关系,确定所述信息对应的应用程序的信息;写入模块404,用于将应用程序的信息写入日志。
[0092]
可选的,处理模型403在根据当前运行的应用程序与所述信息的对应关系,确定所述信息对应的应用程序的信息时,具体用于获取当前运行的应用程序的列表,列表中包括当前运行的用户进程的信息,用户进程的信息中包括用户进程号和用户应用程序相关的信息;在列表中查找与所述信息相匹配的第一进程号;响应于查找到的第一进程号,基于第一进程号对应的用户应用程序相关的信息,确定所述信息对应的应用程序的信息。
[0093]
可选的,处理模型403还用于响应于未查找到第一进程号,获取全部进程的信息,全部进程为系统当前运行的全部进程,全部进程的信息中包括进程号和线程号,线程号所属对应的进程号;将所述信息与进程号和线程号进行匹配;基于匹配得到的第二进程号,根据第二进程号获取对应的第二应用程序相关的信息,根据第二应用程序相关的信息确定信息对应的应用程序的信息。
[0094]
可选的,处理模型403在根据第二进程号获取对应的第二应用程序相关的信息时,具体用于根据第二进程号获取对应的第二进程的信息,第二进程的信息包括用户标识号和进程名称;确定用户标识号是否小于预设阈值;响应于用户标识号小于预设阈值,将进程名称作为第二应用程序相关的信息。
[0095]
可选的,处理模型403还用于响应于用户标识号大于或等于预设阈值,根据用户标识号获取对应的应用程序包信息;将应用程序包信息作为第二应用程序相关的信息。
[0096]
可选的,处理模型403在将应用程序包信息作为第二应用程序相关的信息之前,还用于确定应用程序包信息的分组个数;响应于分组个数为一个,将应用程序包信息作为第二应用程序相关的信息。
[0097]
可选的,处理模型403还用于响应于分组个数为多个,将多组应用程序包信息分别与进程名称进行匹配;将相匹配的一组应用程序包信息作为第二应用程序相关的信息。
[0098]
图4所示实施例的日志优化装置可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0099]
图5为本公开实施例提供的电子设备的结构示意图。本公开实施例提供的电子设备可以执行日志优化方法实施例提供的处理流程,如图5所示,电子设备50包括:存储器51、处理器52、计算机程序和通讯接口53;其中,计算机程序存储在存储器51中,并被配置为由
处理器52执行如上所述的日志优化方法。
[0100]
另外,本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的日志优化方法。
[0101]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0102]
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1