CN111367755A - 一种移动终端的用户日志写入方法及系统 - Google Patents
一种移动终端的用户日志写入方法及系统 Download PDFInfo
- Publication number
- CN111367755A CN111367755A CN202010096156.XA CN202010096156A CN111367755A CN 111367755 A CN111367755 A CN 111367755A CN 202010096156 A CN202010096156 A CN 202010096156A CN 111367755 A CN111367755 A CN 111367755A
- Authority
- CN
- China
- Prior art keywords
- file
- mapping
- user log
- data
- log
- 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 86
- 238000013507 mapping Methods 0.000 claims abstract description 163
- 238000003379 elimination reaction Methods 0.000 claims description 17
- 238000013506 data mapping Methods 0.000 claims description 16
- 230000008030 elimination Effects 0.000 claims description 15
- 238000001514 detection method Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 9
- 238000011084 recovery Methods 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 30
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 11
- 238000013500 data storage Methods 0.000 description 10
- 230000006399 behavior Effects 0.000 description 6
- 230000002123 temporal effect Effects 0.000 description 2
- 238000013024 troubleshooting Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization 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/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/171—Portable consumer electronics, e.g. mobile phone
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种移动终端的用户日志写入方法及系统,所述方法包括:通过内存映射的方式将应用文件系统中的指定文件映射到终端缓存中建立映射文件区,并提供操作句柄;利用操作句柄将用户日志数据写入所述终端缓存;以及将所述终端缓存内的用户日志数据映射到应用文件系统中的所述映射文件区中。本发明利用内存映射的方式将应用的用户日志写入到应用文件系统内,写入效率高,在日志写入过程中不会影响到该应用的其他性能,即使在应用意外退出时,仍然能够保存写入的日志内容,不会发生日志内容丢失情况。
Description
技术领域
本发明涉及互联网应用(Application,简称App)技术领域,特别地涉及一种移动终端的用户日志写入方法及系统。
背景技术
随着移动智能终端技术的发展,依托于移动智能终端,适用于各种用途、业务和用户的App应运而生,其与人们的日常生活已密不可分。为了记录App的业务行为,通常在客户端用户使用过程中,以日志的形式记录用户在使用App过程中的行为,以方便后期分析排查问题。终端的应用进程首先将用户日志写入终端缓存,再将其从终端缓存写入外存中的预置文件或者数据库。其中,由于数据库和预置文件位于外存,其属于磁盘系统,所以在每次将用户日志从内存写入磁盘系统的行为会影响所述应用的性能。另外,当终端系统出现异常,如退出等情况时,由于用户日志写在缓存中,而缓存属于易失性存储器,因而会出现用户日志丢失的问题。
发明内容
针对现有技术中存在的技术问题,本发明提出了一种移动终端的用户日志写入方法及系统,用于提高用户日志写入效率,且不丢失数据。
为了解决上述技术问题,根据本发明的一个方面,提供了一种移动终端的用户日志写入方法,包括以下步骤:
通过内存映射的方式将应用文件系统中的指定文件映射到终端缓存中建立映射文件区,并提供操作句柄;
利用操作句柄将用户日志数据写入所述终端缓存;以及
将所述终端缓存内的用户日志数据映射到应用文件系统中的所述映射文件区中。
优选地,所述方法还包括:响应于在所述终端缓存中的数据量达到空间占比阈值,将所述终端缓存内的用户日志数据映射到应用文件系统中所述映射文件区。
其中所述空间占比阈值为80%-100%。
优选地,所述方法还包括:响应于当前映射文件区写满,解除当前映射文件区与终端缓存的映射关系,并将另一所述指定文件映射到终端缓存中。
优选地,所述方法进一步包括:检测所述应用文件系统中多个用户日志文件的时间属性信息;以及响应日志文件的时间信息超过时间阈值,淘汰所述日志文件。
优选地,所述方法进一步包括:检测所述应用文件系统中存储用户日志文件的占用空间;响应于应用文件系统中用户日志文件的占用空间达到空间阈值,检测所述应用文件系统中多个用户日志文件的时间属性信息;以及淘汰预置数量的时间最早的用户日志文件。
优选地,在所述方法中,在将应用文件系统中的指定文件映射到终端缓存中时,将所述指定文件的预置长度的第一文件区域映射到终端缓存中。
优选地,所述的方法进一步包括:响应于指定文件中所述第一文件区域写满,解除所述第一文件区域与终端缓存的映射关系,并将所述指定文件中预置长度的第二文件区域映射到终端缓存中。
其中所述用户日志文件包括多条日志数据记录,所述日志数据至少包括时间戳。
优选地,所述的方法进一步包括:检测所述用户日志文件中日志数据的时间戳;以及响应于日志数据记录的时间戳信息超过时间阈值,淘汰所述日志数据记录。
优选地,所述方法进一步包括:检测所述用户日志文件的占用空间;以及响应所述用户日志文件的占用空间达到空间阈值,淘汰时间戳最早的、预置数量的日志数据记录。
优选地,所述方法进一步包括:在应用意外退出时,将所述终端缓存内的用户日志映射到应用文件系统中的所述映射文件区中,并解除当前映射关系。
优选地,在应用意外退出解除当前映射关系时,记录当前映射文件区中数据最后写入位置。
优选地,在恢复映射关系时,将所述指定文件映射到所述终端缓存,并以所述数据最后写入位置作为映射区开始的偏移量。
优选地,所述用户日志数据至少还包括记录ID和用户执行方法ID。
根据本发明的另一个方面,还提供了一种移动终端的用户日志写入系统,其中包括内存映射模块、日志数据模块和数据映射模块;其中,所述内存映射模块经配置以将应用文件系统中的指定文件映射到终端缓存中建立映射文件区,并提供操作句柄;所述日志数据模块与所述内存映射模块相连接,经配置以利用操作句柄将用户日志数据写入所述终端缓存;所述数据映射模块与所述日志数据写入模块相连接,经配置以将所述终端缓存内的用户日志数据映射到应用文件系统中的所述映射文件区中。
优选地,所述系统还包括映射解除模块,其与所述日志数据写入模块相连接,经配置,所述日志数据写入模块在当前映射文件区写满后发出解除通知;所述映射解除模块接收所述解除通知,解除映射文件区与终端缓存的映射关系。
优选地,所述内存映射模块经进一步配置与所述映射解除模块相连接,在当前映射关系解除时,将应用文件系统中另一指定文件映射到终端缓存中成为新的映射文件区。
优选地,所述映射文件区为所述指定文件的一个预置长度的第一文件区域;所述内存映射模块经进一步配置与所映射解除模块相连接,在当前映射关系解除时,将所述指定文件中预置长度的第二文件区域映射到终端缓存中。
优选地,所映射解除模块经进一步配置与所述数据映射模块相连接,在所映射解除模块解除所述映射文件与终端缓存的映射关系时,所述数据映射模块将所述终端缓存内的用户日志映射到所述映射文件区中。
优选地,所述数据映射模块经进一步配置以在应用意外退出时,记录当前映射文件中数据最后写入位置。
优选地,所述内存映射模块经进一步配置,在应用恢复时,将意外退出前映射关系中的指定文件映射到所述终端缓存,并以所述数据最后写入位置作为映射区开始的偏移量。
优选地,所述应用文件系统包括多个用户日志文件,所述用户日志文件具有时间属性信息;或者,所述应用文件系统包括一个用户日志文件,所述用户日志文件包括多条用户日志记录;每条用户日志记录至少包括记录ID、用户执行方法ID和时间戳。
优选地,所述系统进一步包括数据淘汰模块,经配置以淘汰掉应用文件系统中超过时间阈值的用户日志数据。
优选地,所述数据淘汰模块经进一步配置包括:时间检测单元和淘汰单元,其中,所述时间检测单元经配置用以检测用户日志文件的时间属性信息或者用户日志记录的时间戳是否超过时间阈值;所述淘汰单元经配置用以淘汰时间属性信息超过时间阈值的用户日志文件或时间戳超过时间阈值的用户日志记录。
优选地,所述数据淘汰模块经进一步配置包括:空间检测单元、时间排序单元和淘汰单元。所述空间检测单元经配置以所述应用文件系统中存储的用户日志文件的占用空间是否达到空间阈值;所述时间排序单元经配置以对用户日志文件或用户日志记录按照时间顺序排序;所述淘汰单元经配置响应所述应用文件系统中存储的用户日志文件的占用空间达到空间阈值,淘汰预置数量的时间最早的用户日志文件或用户日志记录。
本发明利用内存映射的方式将应用的用户日志写入到应用文件系统内,写入效率高,在日志写入过程中不会影响到该应用的其他性能,即使在应用意外退出时,仍然能够保存写入的日志内容,不会发生日志内容丢失情况。
附图说明
下面,将结合附图对本发明的优选实施方式进行进一步详细的说明,其中:
图1是根据本发明的一个实施例图1的用户日志写入原理图;
图2是现有技术中的日志写入过程示意图;
图3是根据本发明的一个实施例的用户日志写入方法流程图;
图4是根据本发明的一个实施例的淘汰日志数据存储空间中长期未使用的数据的方法流程图;
图5是根据本发明另一个实施例的淘汰日志数据存储空间中长期未使用的数据的方法流程图;
图6是根据本发明一个实施例的用户日志写入系统的原理框图;
图7是根据本发明另一个实施例的用户日志写入系统的原理框图;以及
图8是根据本发明另一个实施例的数据淘汰模块的原理框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在以下的详细描述中,可以参看作为本申请一部分用来说明本申请的特定实施例的各个说明书附图。在附图中,相似的附图标记在不同图式中描述大体上类似的组件。本申请的各个特定实施例在以下进行了足够详细的描述,使得具备本领域相关知识和技术的普通技术人员能够实施本申请的技术方案。应当理解,还可以利用其它实施例或者对本申请的实施例进行结构、逻辑或者电性的改变。
在应用运行过程中,通过记录用户日志的方式获取用户行为及其行为操作方法等数据。例如,在社交媒体“微信”运行时,通过用户日志可以记录用户打开了“微信”应用的时间,访问朋友圈的时间、停留时间、访问朋友圈的方法,如点击朋友圈或从其它应用中进入的朋友圈等。通过用户日志记录,便于后期的用户行为分析、问题排查等。通常,用户日志记录在应用文件系统中的用户日志文件中,应用文件系统位于用户终端的外存中。根据不同的应用,用户日志文件可以为多个,也可以为一个,例如,应用文件系统根据日期或容量设置预置大小、预置数量的文件来记录日志,或者是提供一个数据库文件来记录日志。终端中的日志文件定期发送给其服务端,用于及时存储,方便后期使用。
图1是根据本发明一个实施例的用户日志写入原理图。本发明首先建立终端缓存和应用文件系统日志存储区域的映射,将应用文件系统日志存储区域中的指定文件或指定文件中的部分区域映到的终端缓存上。其中,应用文件系统日志存储区域位于外存中,终端缓存位于内存的用户空间。终端应用将要写入的日志数据按照访问内存的方式写入到终端缓存上,再从终端缓存映射到应用文件系统的指定文件或指定文件中的部分区域。其中,应用文件系统位于外存中,即位于磁盘系统中,终端应用在写入日志时利用映射建立后得到操作句柄来操作映射文件的读写,而不需要再调用read()或write()对该文件进行读写。因而减少了由于写入磁盘系统的行为对该应用的性能的影响。另外,相比于普通的调用write()写入数据的方式,也提高了日志数据的写入效率。这是因为,write()属于系统调用,在进行数据写入时,如图2所示,首先将日志数据从用户空间(属于内存空间)写入到内核空间(属于内存空间)的一个缓冲区,然后再写入到外存中。在这个过程中,实际上完成了两次数据的写入过程;而本发明将外存文件映射到内存的用户空间中,在写入日志数据时按照缺页中断,根据这个映射关系,直接将日志数据从用户空间映射到外存中,只进行了一次数据写入过程。因此,本发明的日志写入效率要比普通的日志写入效率高,并且,本发明写入的日志时效性高、完整性好,因而利用本发明记录的日志数据对该应用的健壮性及性能都起到了优化作用。
具体地,图3是根据本发明的一个实施例的用户日志写入方法流程图,所述方法包括以下步骤:
步骤S1,通过内存映射的方式将应用文件系统中的指定文件映射到终端缓存中成为映射文件区,并提供操作句柄。其中,在一个具体实施方式中,可以通过mmap内存映射的方式,将应用文件系统中的一个指定文件映射到终端缓存中。其中,应用文件系统中可用来记录用户日志的文件可以是多个,也可以是一个,因而建立映射关系时,可以将一个指定文件映射到终端缓存中,也可以将指定文件的部分区域映射到终端缓存中。并提供对所述映射文件区的操作句柄来对所述映射文件区进行读或写操作。
在本步骤的一个具体实施过程中,以Linux系统为例,应用的日志记录进程在用户空间调用库函数mmap,在虚拟地址空间中为映射创建虚拟映射区域。其中,所述库函数mmap的原型:void*mmap(void*start,size_t length,int prot,int flags,int fd,off_toffset)。其中所述的参数start为映射区的开始地址;length为映射区的长度;prot为期望的内存保护标志,不能与文件的打开模式冲突,在本发明中设置为port_write,即期望内存可以被写入。flags为指定映射对象的类型,在本发明中为应用文件系统的用来记录日志的指定文件的类型;fd为有效的文件描述词;off_t offset为被映射对象内容的起点。根据该函数中的参数设置,在当前进程的虚拟地址空间中,寻找一段空闲的满足要求的连续的虚拟地址的虚拟区,并为此虚拟区分配一个虚拟区结构(vm_area_struct);接着对这个结构的各个域进行了初始化,将新建的虚拟区结构插入进程的虚拟地址区域链表或树中,从而在虚拟地址空间中创建了虚拟映射区域。
然后,通过文件指针,在文件描述符表中找到对应的指定文件的文件描述符,通过指定文件的文件描述符,链接到内核中指定文件的文件结构体(struct file),每个文件的文件结构体维护着和这个文件相关的各项信息;通过该指定文件的文件结构体,链接到文件操作(file_operations)模块,调用一个原型为int mmap(struct file*filp,structvm_area_struct*vma)的内核函数mmap,其不同于用户空间库函数;内核mmap函数通过虚拟文件系统inode模块定位到文件磁盘物理地址;通过remap_pfn_range函数建立页表,即实现了指定文件地址和虚拟地址的映射关系。以上仅简要描述了内存映射的过程,本领域普通技术人员可参考Linux的mmap相关技术手册实现指定文件或文件区域在终端缓存上的映射。
步骤S2,当应用需要记录用户日志时,利用操作句柄将用户日志数据写入所述终端缓存。在写日志之前,首先,应用进程的写操作访问虚拟地址空间的该段映射地址时,通过查询页表,由于该段映射地址并不在物理页面上,因而引发缺页异常,则内核通过发起请求调页过程在交换缓存空间(swap cache)中寻找需要访问的内存页,由于此时没有对应的内存页,则根据指定文件地址,通过调用nopage函数把对应指定文件地址的指定文件或其文件区域装入到终端缓存中。然后,将用户日记写入所述终端缓存。
步骤S3,判断该终端缓存是否写满,或是否达到阈值,如果已经写满达到阈值,如80%-100%时,则执行步骤S4,将缓存中的数据映射到应用文件系统中的指定文件或其文件区域。如果没有写满或没有达到阈值,则返回步骤S2,继续向缓存中写入用户日记数据。
步骤S5,解除该指定文件或该区域与终端缓存的映射关系。例如,可以通过调用函数int munmap(void*addr,size_t len)来解除该映射关系,然后返回步骤S1,重新将一个新的指定文件或另一段区域映射到终端缓存。
另外,在步骤S2利用操作句柄将用户日志数据写入所述终端缓存后,也可以通过调用函数msync()来强制同步,即将缓存中写入的内容立即映射到用应文件系统的指定文件里。然后再执行步骤S3,判断是否写满,是否需要解除映射关系以映射下一个文件或下一段区域。
当映射的是文件时,在应用文件系统中可以得到多个用户日志文件。如果是映射是一个文件不同的区域,则在应用文件系统中保存有一个用户日志文件。在本发明中,应用进程写入的用户日志数据至少包括时间戳,用于记录该条日志数据的采集时间。用户日志数据还可以包括该条用户日志的记录ID和用户执行方法ID。其中,所述的记录ID代表该条用户日志数据的编号。用户执行方法ID与应用服务端维护的具体方法一一对应。例如,用户通过点击朋友圈的图标访问朋友圈的方法对应一个ID,用户从其他应用通过链接朋友圈API的方式访问朋友圈的方法对应一个ID。应用在写入用户日志时,只记录用户使用的操作方法ID,在服务端进行后续的用户行为分析时,通过该ID与具体方法的对应关系则可以确定用户使用的操作方法。
应用文件系统中用来存储用户日志的日志数据存储空间不能无限制地存储越来越多的数据,在一个实施例中,淘汰存储区域中长期未使用的数据以保证该区域有足够的存储空间。当应用文件系统中多个用户日志文件时,每个文件具有文件名、时间属性信息和所占空间的大小等。在本实施例中,设置有时间阈值,如3天、1周等。如图4所示,为本实施例中提供的淘汰日志数据存储空间中长期未使用的数据的方法流程图。
步骤S611,检测所述应用文件系统中多个用户日志文件的时间信息。
步骤S612,通过系统时间确定每一个用户日志文件的存储时间。例如,当用户日志文件属性中的时间信息为2020/02/10 10:10,当前系统时间为2020/02/10 23:30时,对所述两个时间信息做差,得到该用户日志文件在日志数据存储空间中的存储时间为13小时20分钟。
步骤S613,获取一个用户日志文件的存储时间。
步骤S614,比较所述存储时间与设定的时间阈值,判断该用户日志文件的存储时间是否超过了时间阈值,如24小时。如果该用户日志文件的存储时间超过了时间阈值,则在步骤615淘汰掉所述日志文件,如果该用户日志文件的存储时间没有超过了时间阈值,则在步骤S616判断是否检测完所有的用户日志文件,如果已检测完所有的日志文件,则本次淘汰过程结束。如果还有文件没有检测,则转到步骤S613,取下一个用户日志文件,继续检测过程,直到检测完所有的日志文件。
如果应用文件系统只存储有一个用户日志文件,则根据用户日志文件中记录的日志记录的时间戳来确定该条记录是否过期,如果该条记录过期,则淘汰该条记录。因而,为了保证应用文件系统日志数据存储空间中有足够的存储空间,可删除过期的用户日志文件,也可以淘汰日志文件中过期的日志记录。
在另一个实施例中,可以先检测应用文件系统日志数据存储空间是否达到预置的需要淘汰数据的空间阈值,如果达到了,再检测日志文件或日志记录的时间信息。具体如图5所示,为本实施例中提供的淘汰存储区域中长期未使用的数据的方法流程图。
步骤S621,检测所述应用文件系统日志数据存储空间的占用空间。
步骤S622,判断所述占用空间是否达到了预置的空间阈值,例如,将空间阈值设置为占用空间的占有率达到80%时的存储空间。在当前的占用空间达到或超过所述空间阈值时,执行步骤S623,根据时间信息淘汰日志文件,如果没有,结束该过程。其中,步骤S623可以执行图2中的流程淘汰日志文件,也可以淘汰时间最早的、预定数量的日志文件。例如,对当前存储空间中的所有日志文件按时间先后排序,淘汰时间最早的5个或10个日志文件。
在一个实施例中,图2和图3所述的过程定时执行,如设置每天的预定时刻,如每天11点30分执行图2或图3的数据淘汰过程,从而可以保证应用文件系统中有足够的日志数据存储空间。
在应用意外退出时,应用进程将所述终端缓存内的用户日志数据映射到应用文件系统中的所述映射文件区中,并解除当前映射关系。进一步地,则在解除当前映射关系时,记录当前映射文件区中数据最后写入位置。
在应用恢复时,在重新建立映射关系时,将所述指定文件映射到所述终端缓存,并以所述数据最后写入位置作为映射区开始的偏移量,从而在应用恢复后,可接着原来意外退出时的位置继续写入用户日志。
本发明还提供了用户日志写入系统,如图6所示,为根据本发明一个实施例的用户日志写入系统的原理框图。所述用户日志写入系统包括内存映射模块1、日志数据写入模块2和数据映射模块3。其中,所述内存映射模块1经配置以将应用文件系统中的一个指定文件映射到终端缓存中成为映射文件区,并提供操作句柄。在一个实施例中,应用进程通过mmap内存映射的方式,将应用文件系统中的一个指定文件映射到终端缓存中。例如,应用进程在用户空间调用库函数mmap,在虚拟地址空间中为映射创建虚拟映射区域,调用原型为intmmap(struct file*filp,struct vm_area_struct*vma)的内核函数mmap,实现了指定文件地址和虚拟地址的映射关系。调用所述库函数mmap后返回操作句柄。
日志数据写入模块2与所述内存映射模块1相连接,经配置以利用操作句柄将获得的用户日志数据写入所述终端缓存。应用进程通过所述操作句柄操作所述映射文件区。当应用需要记录用户日志时,在写操作访问虚拟地址空间的映射地址时,由于该段映射地址并不在物理页面上,因而引发缺页异常。内核发起请求调页过程,在该过程中,把对应指定文件地址的指定文件或其文件区域装入到终端缓存中,然后将用户日记数据写入所述终端缓存。
所述数据映射模块3与所述日志数据写入模块2相连接,经配置以将所述终端缓存内的用户日志数据映射到应用文件系统中的所述映射文件区中以得用户日志文件。其中,所述数据映射模块3可在终端缓存存满,或达到阈值时,如80%-100%时,将终端缓存内的用户日志数据映射到应用文件系统中的所述映射文件区中;或者是通过调用函数msync()来强制同步,即将缓存中写入的内容立即保存到用应文件系统的指定文件里。
其中,所述用户日志写入系统还进一步包括映射解除模块4,如图6所示,其与所述日志数据写入模块2相连接,经配置,所述日志数据写入模块在当前映射文件区写满后发出解除通知。所映射解除模块4接收到所述解除通知时,解除所述映射文件区与终端缓存的映射关系,并通知内存映射模块1。此时,如果应用文件系统中的所述指定文件为多个时,在当前映射关系解除后,内存映射模块1将应用文件系统中下一指定文件映射到终端缓存中成为新的映射文件区。如果应用文件系统中的所述指定文件为一个,映射文件区为所述指定文件的一个预置长度的第一文件区域;在当前映射关系解除后,所述内存映射模块1将所述指定文件中预置长度的第二文件区域映射到终端缓存中。
所映射解除模块4还与所述数据映射模块3相连接,在所映射解除模块4解除所述映射文件与终端缓存的映射关系时,向所述数据映射模块3发送通知,所述数据映射模块3将所述终端缓存内的用户日志映射到所述映射文件区中。
在应用意外退出时,所映射解除模块4在解除所述映射文件与终端缓存的映射关系时,所述数据映射模块3在将数据映到当前映射文件中后,记录数据最后写入位置,并将其提供给内存映射模块1。所述内存映射模块1在应用恢复时,将意外退出前映射关系中的指定文件映射到所述终端缓存,并以所述数据最后写入位置作为映射区开始的偏移量。从而可以继续接着原来的指文件或原来的文件区域继续记录日志数据。
如图7所示,为根据本发明另一个实施例的用户日志写入系统原理图,在图6所示的基础上还包括数据淘汰模块5,用以淘汰掉应用文件系统中超过时间阈值的用户日志数据。具体地,所述数据淘汰模块5包括时间检测单元51a和淘汰单元52a。所述时间检测单元51a用以检测用户日志文件的时间属性信息或者用户日志记录的时间戳是否超过时间阈值。当具体地,当应用文件系统的日志数据存储区存储有多个文件时,检测用户日志文件的时间属性信息,并根据系统时间确定用户日志文件的存储时间。如果应用文件系统的日志数据存储区只存储一个用户日志文件时,检测该文件中的每条日志记录的时间戳,根据该日志记录的时间戳确定该条日志记录的存储时间。将该日志文件或该条记录的存储时间与设定的时间阈值做对比,如果用户日志文件或日志记录的存储时间超过了时间阈值则向淘汰单元52a发送淘汰指令,指令中包括要淘汰的日志文件名或日志记录ID。淘汰单元52a接收到所述的淘汰指令后,依据指令中的日志文件名淘汰掉所述日志文件或日志记录ID。
在另一个实施例中,所述数据淘汰模块5包括空间检测单元51b、时间排序单元52b和淘汰单元53b。在本实施例中,所述空间检测单元51b用以检测所述应用文件系统中存储的用户日志文件的占用空间是否达到空间阈值;如果用户日志文件的占用空间达到了空间阈值,如占总存储空间的80%时,向时间排序单元52b发送排序指令。时间排序单元52b接收空间检测单元51b发送的排序指令,对存储区域中的日志文件按照文件的时间属性信息排序,或对日志文件中的日志记录按照时间戳排序。排好序后发送通知给淘汰单元53b。淘汰单元53b按照料预置数量的时间,如5个文件、10条记录等的数量,淘汰最早的用户日志文件或用户日志记录。
本发明利用内存映射的方式将应用用户日志写入到应用文件系统内,写入效率高,在日志写入过程中不会影响到该应用的其他性能,即使在应用意外退出时,仍然能够保存写入的日志内容,不会发生日志内容丢失事件。
上述实施例仅供说明本发明之用,而并非是对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明范围的情况下,还可以做出各种变化和变型,因此,所有等同的技术方案也应属于本发明公开的范畴。
Claims (26)
1.一种移动终端的用户日志写入方法,包括:
通过内存映射的方式将应用文件系统中的指定文件映射到终端缓存中建立映射文件区,并提供操作句柄;
利用操作句柄将用户日志数据写入所述终端缓存;以及
将所述终端缓存内的用户日志数据映射到应用文件系统中的所述映射文件区中。
2.根据权利要求1所述的方法,其中还包括:响应于在所述终端缓存中的数据量达到空间占比阈值,将所述终端缓存内的用户日志数据映射到应用文件系统中所述映射文件区。
3.根据权利要求2所述的方法,其中所述空间占比阈值为80%-100%。
4.根据权利要求1所述的方法,其中还包括:响应于当前映射文件区写满,解除当前映射文件区与终端缓存的映射关系,并将另一所述指定文件映射到终端缓存中。
5.根据权利要求4所述的方法,其中还进一步包括:
检测所述应用文件系统中多个用户日志文件的时间属性信息;以及
响应日志文件的时间信息超过时间阈值,淘汰所述日志文件。
6.根据权利要求4所述的方法,其中还进一步包括:
检测所述应用文件系统中存储用户日志文件的占用空间;
响应于应用文件系统中用户日志文件的占用空间达到空间阈值,检测所述应用文件系统中多个用户日志文件的时间属性信息;以及
淘汰预置数量的时间最早的用户日志文件。
7.根据权利要求1所述的方法,其中,在将应用文件系统中的指定文件映射到终端缓存中时,将所述指定文件的预置长度的第一文件区域映射到终端缓存中。
8.根据权利要求7所述的方法,其中包括:响应于指定文件中所述第一文件区域写满,解除所述第一文件区域与终端缓存的映射关系,并将所述指定文件中预置长度的第二文件区域映射到终端缓存中。
9.根据权利要求7所述的方法,其中所述用户日志文件包括多条日志数据记录,所述日志数据至少包括时间戳。
10.根据权利要求9所述的方法,其中进一步包括:检测所述用户日志文件中日志数据的时间戳;以及响应于日志数据记录的时间戳信息超过时间阈值,淘汰所述日志数据记录。
11.根据权利要求9所述的方法,其中还进一步包括:
检测所述用户日志文件的占用空间;以及
响应所述用户日志文件的占用空间达到空间阈值,淘汰时间戳最早的、预置数量的日志数据记录。
12.根据权利要求1所述的方法,其中进一步包括:在应用意外退出时,将所述终端缓存内的用户日志映射到应用文件系统中的所述映射文件区中,并解除当前映射关系。
13.根据权利要求12所述的方法,其中在应用意外退出解除当前映射关系时,记录当前映射文件区中数据最后写入位置。
14.根据权利要求13所述的方法,其中,在恢复映射关系时,将所述指定文件映射到所述终端缓存,并以所述数据最后写入位置作为映射区开始的偏移量。
15.根据权利要求1所述的方法,其中,所述用户日志数据至少还包括记录ID和用户执行方法ID。
16.一种移动终端的用户日志写入系统,其中包括:
内存映射模块,经配置以将应用文件系统中的指定文件映射到终端缓存中建立映射文件区,并提供操作句柄;
日志数据模块,与所述内存映射模块相连接,经配置以利用操作句柄将用户日志数据写入所述终端缓存;以及
数据映射模块,与所述日志数据写入模块相连接,经配置以将所述终端缓存内的用户日志数据映射到应用文件系统中的所述映射文件区中。
17.根据权利要求16所述的系统,还包括映射解除模块,与所述日志数据写入模块相连接,经配置,所述日志数据写入模块在当前映射文件区写满后发出解除通知;所述映射解除模块接收所述解除通知,解除映射文件区与终端缓存的映射关系。
18.根据权利要求17所述的系统,其中所述内存映射模块经进一步配置与所述映射解除模块相连接,在当前映射关系解除时,将应用文件系统中另一指定文件映射到终端缓存中成为新的映射文件区。
19.根据权利要求17所述的系统,其中所述映射文件区为所述指定文件的一个预置长度的第一文件区域;所述内存映射模块经进一步配置与所映射解除模块相连接,在当前映射关系解除时,将所述指定文件中预置长度的第二文件区域映射到终端缓存中。
20.根据权利要求17所述的系统,其中所映射解除模块经进一步配置与所述数据映射模块相连接,在所映射解除模块解除所述映射文件与终端缓存的映射关系时,所述数据映射模块将所述终端缓存内的用户日志映射到所述映射文件区中。
21.根据权利要求17所述的系统,其中所述数据映射模块经进一步配置以在应用意外退出时,记录当前映射文件中数据最后写入位置。
22.根据权利要求21所述的系统,其中,所述内存映射模块经进一步配置,在应用恢复时,将意外退出前映射关系中的指定文件映射到所述终端缓存,并以所述数据最后写入位置作为映射区开始的偏移量。
23.根据权利要求16所述的系统,其中,所述应用文件系统包括多个用户日志文件,所述用户日志文件具有时间属性信息;或者,所述应用文件系统包括一个用户日志文件,所述用户日志文件包括多条用户日志记录;每条用户日志记录至少包括记录ID、用户执行方法ID和时间戳。
24.根据权利要求23所述的系统,其中,还进一步包括数据淘汰模块,经配置以淘汰掉应用文件系统中超过时间阈值的用户日志数据。
25.根据权利要求24所述的系统,其中,所述数据淘汰模块经进一步配置包括:
时间检测单元,经配置用以检测用户日志文件的时间属性信息或者用户日志记录的时间戳是否超过时间阈值;以及
淘汰单元,经配置用以淘汰时间属性信息超过时间阈值的用户日志文件或时间戳超过时间阈值的用户日志记录。
26.根据权利要求24所述的系统,其中,所述数据淘汰模块经进一步配置包括:
空间检测单元,经配置以所述应用文件系统中存储的用户日志文件的占用空间是否达到空间阈值;
时间排序单元,经配置以对用户日志文件或用户日志记录按照时间顺序排序;以及
淘汰单元,经配置响应所述应用文件系统中存储的用户日志文件的占用空间达到空间阈值,淘汰预置数量的时间最早的用户日志文件或用户日志记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010096156.XA CN111367755A (zh) | 2020-02-17 | 2020-02-17 | 一种移动终端的用户日志写入方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010096156.XA CN111367755A (zh) | 2020-02-17 | 2020-02-17 | 一种移动终端的用户日志写入方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111367755A true CN111367755A (zh) | 2020-07-03 |
Family
ID=71210730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010096156.XA Pending CN111367755A (zh) | 2020-02-17 | 2020-02-17 | 一种移动终端的用户日志写入方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111367755A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112114962A (zh) * | 2020-09-04 | 2020-12-22 | 北京达佳互联信息技术有限公司 | 一种内存分配方法及装置 |
CN112486913A (zh) * | 2020-11-12 | 2021-03-12 | 思创数码科技股份有限公司 | 一种基于集群环境下的日志异步存储方法和设备 |
CN112684983A (zh) * | 2020-12-28 | 2021-04-20 | 北京三快在线科技有限公司 | 数据存储方法、装置、电子设备及可读存储介质 |
CN113721746A (zh) * | 2021-08-04 | 2021-11-30 | 浙江大华技术股份有限公司 | 一种日志的存储方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887393A (zh) * | 2010-07-01 | 2010-11-17 | 中兴通讯股份有限公司 | 基于半虚拟化技术的设备故障复现方法及系统 |
US7937453B1 (en) * | 2008-09-24 | 2011-05-03 | Emc Corporation | Scalable global namespace through referral redirection at the mapping layer |
CN103514260A (zh) * | 2013-08-13 | 2014-01-15 | 中国科学技术大学苏州研究院 | 内存日志文件系统及其实现方法 |
CN107193558A (zh) * | 2017-05-12 | 2017-09-22 | 北京五八信息技术有限公司 | 一种日志文件的生成方法和装置 |
US20190129956A1 (en) * | 2017-10-31 | 2019-05-02 | Delta Pds Co., Ltd. | Smart log file management device and method |
CN110046135A (zh) * | 2019-04-15 | 2019-07-23 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种客户端日志不易失的存储方法 |
CN110362547A (zh) * | 2018-04-02 | 2019-10-22 | 阿里巴巴集团控股有限公司 | 日志文件的编码、解析、存储方法和装置 |
CN110457261A (zh) * | 2019-08-06 | 2019-11-15 | 深圳市腾讯计算机系统有限公司 | 数据访问方法、装置及服务器 |
-
2020
- 2020-02-17 CN CN202010096156.XA patent/CN111367755A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7937453B1 (en) * | 2008-09-24 | 2011-05-03 | Emc Corporation | Scalable global namespace through referral redirection at the mapping layer |
CN101887393A (zh) * | 2010-07-01 | 2010-11-17 | 中兴通讯股份有限公司 | 基于半虚拟化技术的设备故障复现方法及系统 |
CN103514260A (zh) * | 2013-08-13 | 2014-01-15 | 中国科学技术大学苏州研究院 | 内存日志文件系统及其实现方法 |
CN107193558A (zh) * | 2017-05-12 | 2017-09-22 | 北京五八信息技术有限公司 | 一种日志文件的生成方法和装置 |
US20190129956A1 (en) * | 2017-10-31 | 2019-05-02 | Delta Pds Co., Ltd. | Smart log file management device and method |
CN110362547A (zh) * | 2018-04-02 | 2019-10-22 | 阿里巴巴集团控股有限公司 | 日志文件的编码、解析、存储方法和装置 |
CN110046135A (zh) * | 2019-04-15 | 2019-07-23 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种客户端日志不易失的存储方法 |
CN110457261A (zh) * | 2019-08-06 | 2019-11-15 | 深圳市腾讯计算机系统有限公司 | 数据访问方法、装置及服务器 |
Non-Patent Citations (3)
Title |
---|
孙明刚: "" 基于嵌入式Linux的用电信息采集终端存储数据的方法"" * |
李小根;王宗敏;黄志全;: "基于内存映射文件技术快速绘制大场景流域模型" * |
胡伟忠等: ""基于内存映射文件技术的海量影像数据快速读取方法"" * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112114962A (zh) * | 2020-09-04 | 2020-12-22 | 北京达佳互联信息技术有限公司 | 一种内存分配方法及装置 |
CN112486913A (zh) * | 2020-11-12 | 2021-03-12 | 思创数码科技股份有限公司 | 一种基于集群环境下的日志异步存储方法和设备 |
CN112486913B (zh) * | 2020-11-12 | 2023-09-22 | 思创数码科技股份有限公司 | 一种基于集群环境下的日志异步存储方法和设备 |
CN112684983A (zh) * | 2020-12-28 | 2021-04-20 | 北京三快在线科技有限公司 | 数据存储方法、装置、电子设备及可读存储介质 |
CN113721746A (zh) * | 2021-08-04 | 2021-11-30 | 浙江大华技术股份有限公司 | 一种日志的存储方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111367755A (zh) | 一种移动终端的用户日志写入方法及系统 | |
CN109491859B (zh) | 针对Kubernetes集群中容器日志的收集方法 | |
CN110321387B (zh) | 数据同步方法、设备及终端设备 | |
US9110909B2 (en) | File level hierarchical storage management system, method, and apparatus | |
US8250033B1 (en) | Replication of a data set using differential snapshots | |
CN109033360B (zh) | 一种数据查询方法、装置、服务器及存储介质 | |
CN102799514A (zh) | 一种日志记录管理方法和系统 | |
WO2020024772A1 (zh) | 查询数据的方法和装置 | |
CN102129435A (zh) | 数据存储业务控制方法及系统 | |
CN109885453B (zh) | 基于流数据处理的大数据平台监控系统 | |
CN101707633A (zh) | 一种基于文件系统的消息中间件持久消息的存储方法 | |
CN100392606C (zh) | 一种定位虚拟操作系统内存泄漏的方法 | |
CN111061802A (zh) | 一种电力数据管理处理方法、装置及存储介质 | |
CN110019063A (zh) | 计算节点数据容灾回放的方法、终端设备及存储介质 | |
CN103236938A (zh) | 一种基于缓存及异步处理技术的用户行为采集方法及系统 | |
CN111563017B (zh) | 数据处理方法及装置 | |
US11341159B2 (en) | In-stream data load in a replication environment | |
CN112783711A (zh) | NodeJS上程序内存分析的方法、存储介质 | |
CN114089912B (zh) | 基于消息中间件的数据处理方法及装置、存储介质 | |
CN112181277B (zh) | 一种数据存储空间管理方法、装置、存储介质及电子设备 | |
CN115421856A (zh) | 一种数据恢复方法及装置 | |
CN111913996B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN112286448B (zh) | 对象访问方法、装置、电子设备及机器可读存储介质 | |
CN114896215A (zh) | 元数据的存储方法及装置 | |
CN112116730A (zh) | 一种通用的机载数据采集记录装置的数据存储方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200701 Address after: 201802 room jt6668, building 2, No. 4268, Zhennan Road, Jiading District, Shanghai Applicant after: Shanghai quyun Network Technology Co.,Ltd. Address before: 200120 Shanghai Pudong New Area Shenjiang Road 5005 Nongxing Creation Science and Technology Plaza C Building 11 Floors Applicant before: SHANGHAI JIFEN CULTURE PROPAGATION Co.,Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200703 |