日志文件处理方法及装置、存储介质、计算机设备与流程

未命名 10-19 阅读:98 评论:0


1.本技术涉及计算机及数字医疗技术领域,尤其是涉及到一种日志文件处理方法及装置、存储介质、计算机设备。


背景技术:

2.随着计算机技术的兴起,在线医疗相关软件也逐渐兴起,用户可通过安装于移动端的医疗应用程序,实现疾病辅助诊断、健康管理、远程会诊等功能,医疗应用程序存储有医疗数据,如个人健康档案、处方、检查报告等数据,同时应用程序运行过程中也会产生很多日志文件,开发人员可以通过日志文件定位应用程序在运行过程中产生的问题,并及时进行修补。目前日志系统实现方式多将上报数据写入本地文件,并在上报完成后随即删除本地文件。一旦发生用户端应用程序运行异常或者移动端异常被动关机的情况,容易造成日志文件的丢失,从而影响日志上传的完整性。


技术实现要素:

3.有鉴于此,本技术提供了一种日志文件处理方法及装置、存储介质、计算机设备,通过将内存映射到文件,由于内存的管理由操作系统进行,因此只要操作系统不出现异常挂掉,内存中的数据便不会丢失,保证了数据在应用程序崩溃情况下不会丢失。
4.根据本技术的一个方面,提供了一种日志文件处理方法,所述方法包括:
5.运行目标应用程序,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,并建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系;
6.采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中;
7.基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中。
8.可选地,所述方法还包括:
9.当目标应用程序运行崩溃时,记录所述目标虚拟内存中运行日志的回写进度;
10.在目标应用程序恢复运行后,基于所述回写进度,确定所述目标虚拟内存中未被写入所述日志存放文件的待回写运行日志,并基于所述内存映射关系,将所述待回写运行日志写入所述日志存放文件中。
11.可选地,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,包括:
12.系统进程在用户空间调用文件内存映射函数,查询系统进程的虚拟地址空间中空闲的虚拟内存区域,基于空闲的虚拟内存区域确定待分配虚拟内存区域;
13.将所述待分配虚拟内存区域分配虚拟区结构,根据目标应用程序的日志存放文件设置所述虚拟区结构的字段值,得到虚拟区初始化结构,将所述虚拟区初始化结构插入虚
拟地址空间对应的虚拟地址区域链表中,得到目标虚拟内存。
14.可选地,所述建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系,包括:
15.在内核空间调用文件内存映射函数,定位目标应用程序的日志存放文件,得到所述日志存放文件对应的文件物理地址及地址偏移量,基于所述文件物理地址、所述地址偏移量及所述目标虚拟内存对应的内存虚拟地址,建立内存映射页表;
16.基于所述内存映射页表,建立所述日志存放文件与所述目标虚拟内存的内存映射关系;
17.相应地,所述基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中,包括:
18.通过内存映射页表链接到文件物理地址对应的日志存放文件,将目标用程序缓存至目标虚拟内存中的运行日志同步至日志存放文件。
19.可选地,所述运行日志包括日志id,所述方法还包括:
20.根据预设日志上传策略确定待上传日志id,根据待上传日志id对应的待上传运行日志、终端信息及用户信息生成待上传数据;
21.根据远程过程调用通信框架,将待上传数据上传至目标应用程序对应的目标日志库。
22.可选地,所述根据预设日志上传策略确定待上传日志id,包括:
23.若预设日志上传策略为全量日志上传策略,则每隔预设计时周期,获取每个预设计时周期内产生的运行日志对应的日志id,作为待上传日志id;
24.若预设日志上传策略为错误日志上传策略,则在所述日志存放文件中的运行日志中查询错误级别的错误运行日志,并根据所述错误运行日志以及产生于所述错误运行日志前预设条数的运行日志,确定待上传日志id。
25.可选地,所述根据远程过程调用通信框架,将待上传数据上传至目标应用程序对应的目标日志库之后,所述方法还包括:
26.根据需求查询日志id,查询目标日志库中的运行日志,并将查询到的目标运行日志展示于预设可视化日志查询平台。
27.根据本技术的另一方面,提供了一种日志文件处理装置,所述装置包括:
28.映射关系建立模块,用于运行目标应用程序,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,并建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系;
29.日志文件获取模块,用于采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中;
30.内存映射文件模块,用于基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中。
31.可选地,所述日志文件处理装置还包括:日志文件回写模块,用于:
32.当目标应用程序运行崩溃时,记录所述目标虚拟内存中运行日志的回写进度;
33.在目标应用程序恢复运行后,基于所述回写进度,确定所述目标虚拟内存中未被写入所述日志存放文件的待回写运行日志,并基于所述内存映射关系,将所述待回写运行
日志写入所述日志存放文件中。
34.可选地,所述映射关系建立模块,还用于:
35.系统进程在用户空间调用文件内存映射函数,查询系统进程的虚拟地址空间中空闲的虚拟内存区域,基于空闲的虚拟内存区域确定待分配虚拟内存区域;
36.将所述待分配虚拟内存区域分配虚拟区结构,根据目标应用程序的日志存放文件设置所述虚拟区结构的字段值,得到虚拟区初始化结构,将所述虚拟区初始化结构插入虚拟地址空间对应的虚拟地址区域链表中,得到目标虚拟内存。
37.可选地,所述映射关系建立模块,还用于:
38.在内核空间调用文件内存映射函数,定位目标应用程序的日志存放文件,得到所述日志存放文件对应的文件物理地址及地址偏移量,基于所述文件物理地址、所述地址偏移量及所述目标虚拟内存对应的内存虚拟地址,建立内存映射页表;
39.基于所述内存映射页表,建立所述日志存放文件与所述目标虚拟内存的内存映射关系。
40.可选地,所述内存映射文件模块,还用于:
41.通过内存映射页表链接到文件物理地址对应的日志存放文件,将目标用程序缓存至目标虚拟内存中的运行日志同步至日志存放文件。
42.可选地,所述运行日志包括日志id,所述装置还包括:日志文件上传模块,用于:
43.根据预设日志上传策略确定待上传日志id,根据待上传日志id对应的待上传运行日志、终端信息及用户信息生成待上传数据;
44.根据远程过程调用通信框架,将待上传数据上传至目标应用程序对应的目标日志库。
45.可选地,所述日志文件上传模块,还用于:
46.若预设日志上传策略为全量日志上传策略,则每隔预设计时周期,获取每个预设计时周期内产生的运行日志对应的日志id,作为待上传日志id;
47.若预设日志上传策略为错误日志上传策略,则在所述日志存放文件中的运行日志中查询错误级别的错误运行日志,并根据所述错误运行日志以及产生于所述错误运行日志前预设条数的运行日志,确定待上传日志id。
48.可选地,所述装置还包括:日志文件查询模块,用于:
49.根据需求查询日志id,查询目标日志库中的运行日志,并将查询到的目标运行日志展示于预设可视化日志查询平台。
50.依据本技术又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述日志文件处理方法。
51.依据本技术再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述日志文件处理方法。
52.借由上述技术方案,本技术提供的一种日志文件处理方法及装置、存储介质、计算机设备,运行目标应用程序,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,并建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系;采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内
存中;基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中。通过将内存映射到文件,由于内存的管理由操作系统进行,因此只要操作系统不出现异常挂掉,内存中的数据便不会丢失,保证了数据在应用程序崩溃情况下不会丢失。
53.上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
54.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
55.图1示出了本技术实施例提供的一种日志文件处理方法的流程示意图;
56.图2示出了本技术实施例提供的另一种日志文件处理方法的流程示意图;
57.图3示出了本技术实施例提供的又一种日志文件处理方法的流程示意图;
58.图4示出了本技术实施例提供的一种应用程序日志文件处理方法示意图;
59.图5示出了本技术实施例提供的一种日志文件处理装置的结构示意图;
60.图6示出了本技术实施例提供的另一种日志文件处理装置的结构示意图。
具体实施方式
61.下文中将参考附图并结合实施例来详细说明本技术。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
62.在本实施例中提供了一种日志文件处理方法,如图1所示,该方法包括:
63.步骤101,运行目标应用程序,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,并建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系。
64.mmkv是基于mmap(map files or devices into memory,文件内存映射)的移动端通用key-value组件,底层序列化/反序列化使用protobuf实现,性能高,稳定性强。其中,mmap可以将文件或者其它对象映射进内存。具体的,mmap可以将文件的部分或全部内容直接映射到内存中,这样文件中的信息位置也会在内存中有对应的地址空间,此时对文件的读写可以直接用指针来进行操作,而不需要读/写(read/write)函数。同时,操作系统可以将内存数据刷新保存到磁盘中。
65.在本技术实施例中,使用mmkv来做数据缓存。具体的,运行目标应用程序,目标应用程序例如在线医疗相关应用程序,前述目标应用程序位于用户终端(包括手机等智能操作设备),用户在终端登入目标应用程序后,目标应用程序随即运行。接着,目标应用程序请求终端操作系统为目标应用程序分配目标虚拟内存,以便建立目标虚拟内存与目标应用程序的日志存放文件之间的内存映射关系。
66.特别地,在运行目标应用程序,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存之前,还可以根据目标应用程序对应的日志库建立需求,形成日志处理系统业务代码,将所述日志处理系统业务代码嵌入目标应用程序的开发程序,以使目标应用程序运行后,基于所述日志处理系统业务代码处理运行日志。为此,针对不同的
应用程序和用户需求,可以针对性的生成日志处理系统业务代码,适用于多种业务场景需求。
67.步骤102,采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中。
68.接着,采集目标应用程序的运行日志,将运行日志缓存至所述目标虚拟内存中。在一种可能的实现方式中,目标应用程序为医疗领域应用程序,运行应用程序后,还可以采集医疗数据,如个人健康档案、处方、检查报告等数据,将医疗数据缓存至所述目标虚拟内存中。特别地,运行日志采用protobuf结构化数据存储格式,一方面可以提高数据的安全性,即存储的二进制运行日志数据必须通过对应的数据模型才能转成结构化数据;另一方面也极大的减小了存储数据的体积。
69.步骤103,基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中。
70.基于内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中。如果当前的应用程序发生崩溃,那么待应用程序重新启动后,基于建立的内存映射关系调用系统接口,可以调换出应用程序发生崩溃之前的内存数据,从而保障了数据的完整性。
71.特别地,文件内存映射还可以提供用户程序对内存直接访问的能力。内存映像即把内核中特定部分的内存空间映射到用户级程序的内存空间,用户空间和内核空间共享一块相同的内存,内核在这块地址内存储变更的任何数据,用户可以立即发现并使用,无须数据拷贝。使用mmap方式获取磁盘上的文件信息,只需将磁盘上的数据拷贝至共享内存中,用户进程便可直接获取信息,相对于传统的write/read操作:必须先把数据从磁盘拷贝至到内核缓冲区中(页缓冲),然后再把数据拷贝至用户进程中,mmap减少了一次数据拷贝的过程,提升了数据存储及提取的性能。
72.通过应用本实施例的技术方案,通过终端中运行的应用程序向操作系统申请映射文件的内存空间,应用程序向内存中写入数据,将所需要的数据写到映射好的内存空间中,由操作系统完成内存到文件的回写,以达到永久存储的效果。可以实现数据(运行日志)在应用程序未被卸载和手机异常关机的情况下,数据存储的完整性。
73.进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,提供了另一种日志文件处理方法,如图2所示,该方法包括:
74.步骤201,运行目标应用程序,系统进程在用户空间调用文件内存映射函数,查询系统进程的虚拟地址空间中空闲的虚拟内存区域,基于空闲的虚拟内存区域确定待分配虚拟内存区域。
75.步骤202,将所述待分配虚拟内存区域分配虚拟区结构,根据目标应用程序的日志存放文件设置所述虚拟区结构的字段值,得到虚拟区初始化结构,将所述虚拟区初始化结构插入虚拟地址空间对应的虚拟地址区域链表中,得到目标虚拟内存。
76.在本技术上述实施例中,可以通过mmap进行文件内存映射,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现映射关系后,进程可以采用指针的方式读写操作内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间
的文件共享。具体的,运行目标应用程序,系统进程在用户空间调用mmap(map fil es or devices into memory,文件内存映射)函数,在当前系统进程的虚拟地址空间中,寻找一段空闲的满足要求的连续的虚拟地址,确定待分配虚拟内存区域。接着,为待分配虚拟内存区域分配一个虚拟区结构(vm_area_struct),并对虚拟区结构的各个域进行初始化,即跟据目标应用程序的日志存放文件设置虚拟区结构的字段值,得到虚拟区初始化结构。特别地,vm_area_struct结构所描述的虚存空间以vm_start、vm_end成员表示,它们分别保存了该虚存空间的首地址和末地址后第一个字节的地址,以字节为单位,所以虚存空间范围可以用(vm_start,vm_end)表示。一个进程的虚存空间需要多个vm_ar ea_struct结构来描述,假如该vm_area_struct描述的是一个文件映射的虚存空间,成员vm_file便指向被映射的文件的file结构,vm_pgoff是该虚存空间起始地址在vm_file文件里面的文件偏移,单位为物理页面。进程建立vm_area_struct结构后,只是说明进程可以访问这个虚存空间,但有可能还没有分配相应的物理页面并建立好页面映射。在这种情况下,若是进程执行中有指令需要访问该虚存空间中的内存,便会产生一次缺页异常。这时候,就需要通过vm_area_struct结构里面的vm_ops-》nopage所指向的函数来将产生缺页异常的地址对应的文件数据读取出来。接着,将新建的虚拟区结构(虚拟区初始化结构)插入系统进程的虚拟地址区域链表(或树)中,得到目标虚拟内存。
77.步骤203,在内核空间调用文件内存映射函数,定位目标应用程序的日志存放文件,得到所述日志存放文件对应的文件物理地址及地址偏移量,基于所述文件物理地址、所述地址偏移量及所述目标虚拟内存对应的内存虚拟地址,建立内存映射页表。
78.步骤204,基于所述内存映射页表,建立所述日志存放文件与所述目标虚拟内存的内存映射关系。
79.接着,为目标应用程序分配目标虚拟内存后,在内核空间调用文件内存映射函数,定位目标应用程序的日志存放文件,得到所述日志存放文件对应的文件物理地址及地址偏移量,文件物理地址可以为日志存放文件映射在目标虚拟内存的起始地址,通过起始地址以及地址偏移量可以反映出日志存放文件的文件长度,基于所述文件物理地址、所述地址偏移量及所述目标虚拟内存对应的内存虚拟地址,建立内存映射页表。通过内存映射页表实现了文件地址和虚拟地址区域的映射关系。
80.步骤205,采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中。
81.步骤206,通过内存映射页表链接到文件物理地址对应的日志存放文件,将目标用程序缓存至目标虚拟内存中的运行日志同步至日志存放文件。
82.采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中,通过内存映射页表链接到文件物理地址对应的日志存放文件,将目标用程序缓存至目标虚拟内存中的运行日志同步至日志存放文件。实现了用户空间和内核空间的高效交互方式,同时,两空间的各自修改操作可以直接反映在映射的区域内,从而被对方空间及时捕捉。
83.步骤207,当目标应用程序运行崩溃时,记录所述目标虚拟内存中运行日志的回写进度。
84.步骤208,在目标应用程序恢复运行后,基于所述回写进度,确定所述目标虚拟内
存中未被写入所述日志存放文件的待回写运行日志,并基于所述内存映射关系,将所述待回写运行日志写入所述日志存放文件中。
85.当目标应用程序运行崩溃时,记录目标虚拟内存中运行日志的回写进度。在目标应用程序恢复运行后,基于回写进度,确定目标虚拟内存中未被写入日志存放文件的待回写运行日志,并基于内存映射关系,将待回写运行日志写入日志存放文件中。保障了日志数据的安全性,提高了日志数据的完整性及可靠性。
86.通过应用本实施例的技术方案,运行目标应用程序,系统进程启动映射过程,在虚拟地址空间中为目标应用程序创建虚拟映射区域,调用内核空间的系统调用函数mmap,实现日志存存放文件的文件物理地址和进程虚拟地址的一一映射关系,当目标应用程序运行崩溃时,基于内存映射关系将未被写入日志存放文件的运行日志重新回写至日志存放文件中,保障了日志数据的安全性,提高了日志数据的完整性及可靠性。
87.进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,提供了又一种日志文件处理方法,如图3所示,该方法包括:
88.步骤301,运行目标应用程序,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,并建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系。
89.步骤302,采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中。
90.步骤303,基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中。
91.在本技术上述实施例中,运行目标应用程序,所述目标应用程序请求终端操作系统为目标应用程序分配目标虚拟内存,并建立目标虚拟内存与目标应用程序的日志存放文件之间的内存映射关系。采集目标应用程序的运行日志,将所述运行日志缓存至目标虚拟内存中。基于内存映射关系,将目标虚拟内存中的运行日志写入日志存放文件中。为此,通过文件内存映射,将目标应用程序的运行日志预先缓存于目标虚拟内存后,存入日志存放文件,由于内存的管理由操作系统进行,因此只要操作系统不出现异常挂掉,内存中的数据便不会丢失,保证了数据在应用程序崩溃情况下不会丢失。
92.步骤304,根据预设日志上传策略确定待上传日志id,若预设日志上传策略为全量日志上传策略,则每隔预设计时周期,获取每个预设计时周期内产生的运行日志对应的日志id,作为待上传日志id,其中,所述运行日志包括日志id。
93.步骤305,若预设日志上传策略为错误日志上传策略,则在所述日志存放文件中的运行日志中查询错误级别的错误运行日志,并根据所述错误运行日志以及产生于所述错误运行日志前预设条数的运行日志,确定待上传日志id。
94.步骤306,根据待上传日志id对应的待上传运行日志、终端信息及用户信息生成待上传数据。
95.接着,采用策略模式对运行日志进行上传。用户可以通过提供的预设对外接口灵活的配置日志上传策略等参数。预设日志上传策略包括全量日志上传策略及错误日志上传策略,全量日志上传策略可以用于测试环境,通过初始化定时器,定时启动日志上传任务,例如:每分钟上传一次应用程序产生的日志;错误日志上传策略可以用于生产环境,当遇有
错误级别的错误运行日志时,例如error级别的日志,随即触发日志上传任务,上传错误运行日志和错误运行日志之前的预设条数的日志。不同的策略对应不同的日志上传方式,适用于多种业务场景。具体的,根据预设日志上传策略确定待上传日志id,以便根据日志id读取批量数据。若预设日志上传策略为全量日志上传策略,则每隔预设计时周期,获取每个预设计时周期内产生的运行日志对应的日志id,作为待上传日志id。若预设日志上传策略为错误日志上传策略,则在所述日志存放文件中的运行日志中查询错误级别的错误运行日志,并根据所述错误运行日志以及产生于所述错误运行日志前预设条数的运行日志,确定待上传日志id。接着,根据待上传日志id对应的待上传运行日志、终端信息及用户信息进行数据组装,即对字段进行整合,将单个字段组装成大的json数据,生成待上传数据。
96.步骤307,根据远程过程调用通信框架,将待上传数据上传至目标应用程序对应的目标日志库。
97.接着,日志上传方式采用grpc(remote procedure call远程过程调用)通信框架,grpc基于http/2标准设计,带来诸如双向流、流控、头部压缩、单tcp连接上的多复用请求等特性。根据远程过程调用通信框架,将待上传数据上传至目标应用程序对应的目标日志库,使得终端省电的同时,还能够节省空间占用。特别地,上传日志时可以建立多个日志上传线程,通过批量上传任务并行队列上传待上传数据,提高数据传输效率。
98.步骤308,根据需求查询日志id,查询目标日志库中的运行日志,并将查询到的目标运行日志展示于预设可视化日志查询平台。
99.接着根据需求查询日志id,查询目标日志库中的运行日志,并将查询到的目标运行日志展示于预设可视化日志查询平台。以便可以随时查询运行日志,方便定位应用程序的系统问题。
100.通过应用本实施例的技术方案,如图4所示,目标应用程序将运行日志缓存于终端目标虚拟内存中,终端操作系统基于内存映射关系将目标虚拟内存中的运行日志同步至日志存放文件,根据全量日志上传策略或错误日志上传策略确定待上传日志id后,在日志存放文件中确定待上传日志id对应的待上传日志,然后结合待上传日志、终端信息及用户信息组装生成待上传数据,并将待上传数据上传至目标日志库,通过可视化日志查询平台可以查询目标日志库中的运行日志。保障了日志数据的安全性、完整性及可靠性,同时多策略日志上传模式使得上传更加灵活,增加了可视化日志查询平台方便随时查询日志,定位应用程序出现的问题并及时进行修补。
101.进一步的,作为图1方法的具体实现,本技术实施例提供了一种日志文件处理装置,如图5所示,该装置包括:
102.映射关系建立模块401,用于运行目标应用程序,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,并建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系;
103.日志文件获取模块402,用于采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中;
104.内存映射文件模块403,用于基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中。
105.可选地,所述映射关系建立模块401,还用于:
106.系统进程在用户空间调用文件内存映射函数,查询系统进程的虚拟地址空间中空闲的虚拟内存区域,基于空闲的虚拟内存区域确定待分配虚拟内存区域;
107.将所述待分配虚拟内存区域分配虚拟区结构,根据目标应用程序的日志存放文件设置所述虚拟区结构的字段值,得到虚拟区初始化结构,将所述虚拟区初始化结构插入虚拟地址空间对应的虚拟地址区域链表中,得到目标虚拟内存。
108.可选地,所述映射关系建立模块401,还用于:
109.在内核空间调用文件内存映射函数,定位目标应用程序的日志存放文件,得到所述日志存放文件对应的文件物理地址及地址偏移量,基于所述文件物理地址、所述地址偏移量及所述目标虚拟内存对应的内存虚拟地址,建立内存映射页表;
110.基于所述内存映射页表,建立所述日志存放文件与所述目标虚拟内存的内存映射关系。
111.可选地,所述内存映射文件模块403,还用于:
112.通过内存映射页表链接到文件物理地址对应的日志存放文件,将目标用程序缓存至目标虚拟内存中的运行日志同步至日志存放文件。
113.进一步的,本技术实施例提供了另一种日志文件处理装置,如图6所示,该装置包括:
114.映射关系建立模块501,用于运行目标应用程序,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,并建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系;
115.日志文件获取模块502,用于采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中;
116.内存映射文件模块503,用于基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中;
117.日志文件回写模块504,用于当目标应用程序运行崩溃时,记录所述目标虚拟内存中运行日志的回写进度,在目标应用程序恢复运行后,基于所述回写进度,确定所述目标虚拟内存中未被写入所述日志存放文件的待回写运行日志,并基于所述内存映射关系,将所述待回写运行日志写入所述日志存放文件中;
118.日志文件上传模块505,用于根据预设日志上传策略确定待上传日志id,根据待上传日志id对应的待上传运行日志、终端信息及用户信息生成待上传数据,根据远程过程调用通信框架,将待上传数据上传至目标应用程序对应的目标日志库;
119.日志文件查询模块506,用于根据需求查询日志id,查询目标日志库中的运行日志,并将查询到的目标运行日志展示于预设可视化日志查询平台。
120.可选地,所述映射关系建立模块501,还用于:
121.系统进程在用户空间调用文件内存映射函数,查询系统进程的虚拟地址空间中空闲的虚拟内存区域,基于空闲的虚拟内存区域确定待分配虚拟内存区域;
122.将所述待分配虚拟内存区域分配虚拟区结构,根据目标应用程序的日志存放文件设置所述虚拟区结构的字段值,得到虚拟区初始化结构,将所述虚拟区初始化结构插入虚拟地址空间对应的虚拟地址区域链表中,得到目标虚拟内存。
123.可选地,所述映射关系建立模块501,还用于:
124.在内核空间调用文件内存映射函数,定位目标应用程序的日志存放文件,得到所述日志存放文件对应的文件物理地址及地址偏移量,基于所述文件物理地址、所述地址偏移量及所述目标虚拟内存对应的内存虚拟地址,建立内存映射页表;
125.基于所述内存映射页表,建立所述日志存放文件与所述目标虚拟内存的内存映射关系。
126.可选地,所述内存映射文件模块503,还用于:
127.通过内存映射页表链接到文件物理地址对应的日志存放文件,将目标用程序缓存至目标虚拟内存中的运行日志同步至日志存放文件。
128.可选地,所述日志文件上传模块505,还用于:
129.若预设日志上传策略为全量日志上传策略,则每隔预设计时周期,获取每个预设计时周期内产生的运行日志对应的日志id,作为待上传日志id;
130.若预设日志上传策略为错误日志上传策略,则在所述日志存放文件中的运行日志中查询错误级别的错误运行日志,并根据所述错误运行日志以及产生于所述错误运行日志前预设条数的运行日志,确定待上传日志id。
131.需要说明的是,本技术实施例提供的一种日志文件处理装置所涉及各功能单元的其他相应描述,可以参考图1至图3方法中的对应描述,在此不再赘述。
132.基于上述如图1至图3所示方法,相应的,本技术实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述如图1至图3所示的日志文件处理方法。
133.基于这样的理解,本技术的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施场景所述的方法。
134.基于上述如图1至图3所示的方法,以及图5、图6所示的虚拟装置实施例,为了实现上述目的,本技术实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1至图3所示的日志文件处理方法。
135.可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(radio frequency,rf)电路,传感器、音频电路、wi-fi模块等等。用户接口可以包括显示屏(display)、输入单元比如键盘(keyboard)等,可选用户接口还可以包括usb接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、wi-fi接口)等。
136.本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
137.存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
138.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本技术可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现运行目标应用程序,所
述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,并建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系;采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中;基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中。将内存映射到文件,由于内存的管理由操作系统进行,因此只要操作系统不出现异常挂掉,内存中的数据便不会丢失。通过将日志缓存至虚拟内存的数据处理方式,保证了数据在应用程序崩溃情况下不会丢失。
139.本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本技术所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
140.上述本技术序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本技术的几个具体实施场景,但是,本技术并非局限于此,任何本领域的技术人员能思之的变化都应落入本技术的保护范围。

技术特征:
1.一种日志文件处理方法,其特征在于,所述方法包括:运行目标应用程序,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,并建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系;采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中;基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:当目标应用程序运行崩溃时,记录所述目标虚拟内存中运行日志的回写进度;在目标应用程序恢复运行后,基于所述回写进度,确定所述目标虚拟内存中未被写入所述日志存放文件的待回写运行日志,并基于所述内存映射关系,将所述待回写运行日志写入所述日志存放文件中。3.根据权利要求1所述的方法,其特征在于,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,包括:系统进程在用户空间调用文件内存映射函数,查询系统进程的虚拟地址空间中空闲的虚拟内存区域,基于空闲的虚拟内存区域确定待分配虚拟内存区域;将所述待分配虚拟内存区域分配虚拟区结构,根据目标应用程序的日志存放文件设置所述虚拟区结构的字段值,得到虚拟区初始化结构,将所述虚拟区初始化结构插入虚拟地址空间对应的虚拟地址区域链表中,得到目标虚拟内存。4.根据权利要求1所述的方法,其特征在于,所述建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系,包括:在内核空间调用文件内存映射函数,定位目标应用程序的日志存放文件,得到所述日志存放文件对应的文件物理地址及地址偏移量,基于所述文件物理地址、所述地址偏移量及所述目标虚拟内存对应的内存虚拟地址,建立内存映射页表;基于所述内存映射页表,建立所述日志存放文件与所述目标虚拟内存的内存映射关系;相应地,所述基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中,包括:通过内存映射页表链接到文件物理地址对应的日志存放文件,将目标用程序缓存至目标虚拟内存中的运行日志同步至日志存放文件。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述运行日志包括日志id,所述方法还包括:根据预设日志上传策略确定待上传日志id,根据待上传日志id对应的待上传运行日志、终端信息及用户信息生成待上传数据;根据远程过程调用通信框架,将待上传数据上传至目标应用程序对应的目标日志库。6.根据权利要求5所述的方法,其特征在于,所述根据预设日志上传策略确定待上传日志id,包括:若预设日志上传策略为全量日志上传策略,则每隔预设计时周期,获取每个预设计时周期内产生的运行日志对应的日志id,作为待上传日志id;
若预设日志上传策略为错误日志上传策略,则在所述日志存放文件中的运行日志中查询错误级别的错误运行日志,并根据所述错误运行日志以及产生于所述错误运行日志前预设条数的运行日志,确定待上传日志id。7.根据权利要求6所述的方法,其特征在于,所述根据远程过程调用通信框架,将待上传数据上传至目标应用程序对应的目标日志库之后,所述方法还包括:根据需求查询日志id,查询目标日志库中的运行日志,并将查询到的目标运行日志展示于预设可视化日志查询平台。8.一种日志文件处理装置,其特征在于,所述装置包括:映射关系建立模块,用于运行目标应用程序,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,并建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系;日志文件获取模块,用于采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中;内存映射文件模块,用于基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中。9.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述日志文件处理的方法。10.一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述日志文件处理的方法。

技术总结
本申请涉及计算机及数字医疗技术领域,公开了一种日志文件处理方法及装置、存储介质、计算机设备,该方法包括:运行目标应用程序,所述目标应用程序请求终端操作系统为所述目标应用程序分配目标虚拟内存,并建立所述目标虚拟内存与所述目标应用程序的日志存放文件之间的内存映射关系;采集所述目标应用程序的运行日志,将所述运行日志缓存至所述目标虚拟内存中;基于所述内存映射关系,将所述目标虚拟内存中的运行日志写入所述日志存放文件中。将内存映射到文件,由于内存的管理由操作系统进行,因此只要操作系统不出现异常挂掉,内存中的数据便不会丢失。通过将日志缓存至虚拟内存的数据处理方式,保证了数据在应用程序崩溃情况下不会丢失。况下不会丢失。况下不会丢失。


技术研发人员:汪传文
受保护的技术使用者:康键信息技术(深圳)有限公司
技术研发日:2023.07.04
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐