CN106649735B - 一种记录日志数据的方法和装置 - Google Patents

一种记录日志数据的方法和装置 Download PDF

Info

Publication number
CN106649735B
CN106649735B CN201611209026.2A CN201611209026A CN106649735B CN 106649735 B CN106649735 B CN 106649735B CN 201611209026 A CN201611209026 A CN 201611209026A CN 106649735 B CN106649735 B CN 106649735B
Authority
CN
China
Prior art keywords
log data
cache
application program
log
data
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.)
Active
Application number
CN201611209026.2A
Other languages
English (en)
Other versions
CN106649735A (zh
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.)
Tencent Technology Shenzhen Co Ltd
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201611209026.2A priority Critical patent/CN106649735B/zh
Publication of CN106649735A publication Critical patent/CN106649735A/zh
Application granted granted Critical
Publication of CN106649735B publication Critical patent/CN106649735B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files

Abstract

本发明公开了一种记录日志数据的方法和装置,属于计算机技术领域。所述方法包括:获取应用程序生成的日志数据;以单条日志数据为基本压缩元素,对生成的日志数据逐条进行流式压缩,对每条压缩后的日志数据进行缓存;每当缓存的日志数据满足预设导出条件时,将缓存的日志数据写入日志文件中,并清除缓存的日志数据。采用本发明,可以减少应用程序的卡顿。

Description

一种记录日志数据的方法和装置
技术领域
本发明涉及计算机技术领域,特别涉及一种记录日志数据的方法和装置。
背景技术
应用程序在运行的过程中可以记录日志数据。一般,基于技术人员的设置,应用程序在完成某项处理或出现某种错误时,可以记录一条日志数据。日志数据可以帮助技术人员对应用程序进行运行状态分析和故障分析等。
在早期的技术中,应用程序每生成一条日志数据时,就会将日志数据写入到日志文件中。将日志数据写入到日志文件的处理需要系统程序来执行,首先应用程序生成日志数据后可以向系统程序发送写入申请,然后由系统程序将日志数据写入日志文件中。上述处理过程中,每记录一条日志数据,就需要在应用程序处理和系统程序处理之间进行一次往复切换,而这种切换的时延很高。
为了减少应用程序处理和系统程序处理之间的切换,提出了一种新的记录日志数据的处理方式:应用程序每生成一条日志数据时,先对生成的日志数据进行缓存,当缓存的日志数据达到一定数据量时,对缓存的多条日志数据进行整体压缩,再将压缩后的日志数据写入日志文件。这样,将日志数据写入日志文件的频率降低,从而,应用程序处理和系统程序处理之间切换的频率也有所降低,可以降低处理过程的时延。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
上述处理中,当缓存的日志数据达到一定数据量时,对缓存的多条日志数据进行整体压缩,这样,需要压缩的数据量比较大,会突发性地占用大量的处理资源,从而,会导致应用程序运行卡顿。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种记录日志数据的方法和装置。所述技术方案如下:
第一方面,提供了一种记录日志数据的方法,所述方法包括:
获取应用程序生成的日志数据;
以单条日志数据为基本压缩元素,对生成的日志数据逐条进行流式压缩,对每条压缩后的日志数据进行缓存;
每当缓存的日志数据满足预设导出条件时,将缓存的日志数据写入日志文件中,并清除缓存的日志数据。
第二方面,提供了记录日志数据的装置,所述装置包括:
获取模块,用于获取应用程序生成的日志数据;
缓存模块,用于以单条日志数据为基本压缩元素,对生成的日志数据逐条进行流式压缩,对每条压缩后的日志数据进行缓存;
写入模块,用于每当缓存的日志数据满足预设导出条件时,将缓存的日志数据写入日志文件中,并清除缓存的日志数据。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,采用流式压缩的方式,每生成一条日志数据即可以压缩一条日志数据,每次压缩的数据量比较小,不会突发性的占用大量的处理资源,从而,可以减少应用程序的卡顿。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种记录日志数据的方法的流程示意图;
图2是本发明实施例提供的一种日志结构体的示意图;
图3是本发明实施例提供的一种存在数据损坏的日志文件的示意图;
图4是本发明实施例提供的一种记录日志数据的方法的流程示意图;
图5是本发明实施例提供的一种记录日志数据的方法的流程示意图;
图6是本发明实施例提供的一种记录日志数据的装置的结构示意图;
图7是本发明实施例提供的一种终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种记录日志数据的方法,该方法可以由终端实现。其中,终端可以是手机、平板电脑、台式计算机、笔记本计算机等,终端中安装有系统程序和应用程序。用户在使用终端的过程中,基于自己的不同需求,会使用各种各样的应用程序。该方法可以应用于应用程序的运行过程中。应用程序会基于其进行的处理或出现的错误生成日志数据,进而可以采用本发明实施例提供的方法,进行日志数据的记录,最终得到日志文件。该日志文件可以由终端上传给服务器,以提供给相应的技术人员,技术人员可以基于日志文件对应用程序进行运行状态分析和故障分析等。
终端可以包括处理器、存储器等部件。处理器,可以为CPU(Central ProcessingUnit,中央处理单元)等,可以用于获取应用程序生成的日志数据,对生成的日志数据进行流式压缩,将缓存的日志数据写入日志文件中,等处理。存储器,可以为RAM(Random AccessMemory,随机存取存储器),Flash(闪存)等,可以用于存储接收到的数据、处理过程所需的数据、处理过程中生成的数据等,如日志数据、预设导出条件等。
终端还可以包括收发器、输入部件、显示部件、音频输出部件等。收发器,可以用于与服务器进行数据传输,例如,可以向服务器发送日志文件,收发器可以包括天线、匹配电路、调制解调器等。输入部件可以是触摸屏、键盘、鼠标等。音频输出部件可以是音箱、耳机等。
如图1所示,本发明一个实施例提供的记录日志数据的方法的处理流程可以包括如下的步骤:
步骤101,获取应用程序生成的日志数据。
在实施中,技术人员可以预先在应用程序中设置日志记录的触发事件,触发事件可以是执行某项处理或出现某种错误,例如,可以设置应用程序显示A页面时生成一条日志数据,或者,可以设置应用程序出现网络连接失败时生成一条日志数据。
在应用程序运行的过程中,当某个触发事件发生时,应用程序会调用日志接口并输入需要记录的数据。进而应用程序中负责日志记录的模块,对输入的数据进行日志格式化,为该数据添加文件名、函数名、时间戳、日志级别、线程号等信息,即可生成日志数据。其中,文件名是调用日志接口的代码所在文件的文件名,函数名是调用日志接口的函数的函数名,线程号是调用日志接口的线程的线程号。应用程序每生成一条日志数据,则可以获取该条日志数据,进行后续的处理。
步骤102,以单条日志数据为基本压缩元素,对生成的日志数据逐条进行流式压缩,对每条压缩后的日志数据进行缓存。
其中,流式压缩是一种参考历史数据对新生成的数据进行压缩的压缩方式,可以应用于对实时生成或实时接收的数据进行压缩。基本压缩元素是流式压缩过程中进行数据压缩的基本单位,流式压缩每次压缩一个基本压缩元素。在流式压缩的过程中,每次压缩一个基本压缩元素时,以之前压缩的基本压缩元素作为参考数据,来进行压缩。基本压缩元素的可以基于流式压缩的实际需求进行设置,本实施例中,以单条日志数据为基本压缩元素。
在实施中,每当应用程序生成一条日志数据时,应用程序可以以当前时刻之前生成的日志数据为参考数据,对当前生成的日志数据进行压缩。在获取参考数据时,可以从当前时刻开始获取之前生成的部分或全部日志数据。例如,可以从当前时刻开始,向前逐条获取日志数据,直到获取的日志数据的总数据量大于或等于预设数据量(如32K)时,停止获取日志数据,并将以获取的日志数据作为参考数据。其中,预设数据量的设置,可以基于压缩率和压缩处理量综合考虑,取值可以在16~64K。基于参考数据对日志数据进行压缩时,可以确定日志数据相对于参考数据的差别,将此差别记录下来作为压缩数据。每压缩一条日志数据,则可以将压缩后的日志数据以日志结构体的形式存储到应用缓存中。应用缓存即上述应用程序向系统程序申请的缓存,用于缓存应用程序的数据。
可选的,在进行流式压缩的过程中,每压缩一条日志数据时,可以只参考当前应用缓存中存在的日志数据,相应的,处理可以如下:每当生成一条日志数据时,如果当前缓存有日志数据,则以当前缓存的日志数据为参考数据,对当前生成的日志数据进行压缩,如果当前未缓存有日志数据,则不参考其它日志数据,对当前生成的日志数据进行压缩。
在实施中,每当应用程序生成一条日志数据时,应用程序可以检测应用缓存中是否缓存有日志数据。因为,应用程序每次将缓存的日志数据写入日志文件的时候,会将应用缓存中的日志数据清除掉,所以,在有些时候应用缓存中是没有日志数据的。如果应用程序这时检测到应用缓存中存有日志数据,则可以将这些日志数据作为参考数据,对当前生成的日志数据进行压缩,在应用缓存中的日志数据的数据量较大时,可以只将其中的部分日志数据作为参考数据。如果检测到应用缓存中不存在日志数据,则可以将当前生成的日志数据作为流式压缩的起始基本压缩单元,进行压缩,即不参考其它日志数据,对当前生成的日志数据进行压缩。这样,每次清除应用缓存中的日志数据后生成第一条日志数据时,则可以认为是流式压缩的一个起始点,该日志数据则可以认为是流式压缩的一个起始基本压缩单元。相应的,每次清除应用缓存中的日志数据时,则可以认为是流式压缩的一个结束点,此时缓存的最后一条日志数据则可以认为是流式压缩的一个结束基本压缩单元。每次将缓存的日志数据写入日志文件时,从缓存中写入日志文件中的多条日志数据可称为一个压缩单位。
由于各种不同的原因,可能会造成日志文件中的某部分日志数据发生损坏。例如,在日志数据写入缓存时,应用程序异常关闭或终端死机,则可能造成日志数据损坏,在日志数据写入日志文件后,日志文件中的该日志数据也是损坏的,或者,在日志数据写入日志文件时,终端死机,则可能造成日志文件中的该日志数据损坏。如图3所示,基于上述的流式压缩的处理方式,如果日志文件中的某条日志数据损坏,则只会影响到该日志数据所在的压缩单位中在该条日志数据之后的日志数据的解压缩,而不会影响到其它日志数据的解压缩。而现有技术中采用块式压缩,日志文件中某条日志数据损坏,会影响到该日志数据所在的压缩单位中的所有日志数据的解压缩。所以,本发明实施例的方法,可以减少日志数据损坏所造成的数据丢失。
可选的,在缓存日志数据时,可以对日志数据进行加密,相应的处理可以是:对每条压缩后的日志数据进行加密,对压缩加密后的日志数据进行缓存。
在实施中,应用程序每压缩一条日志数据,则可以基于预设的密钥(key)对压缩后的日志数据进行加密,在将压缩加密后的日志数据以日志结构体的形式存储到应用缓存中。其中,日志结构体的结构可以如图2所示,其中,magic start num字段为日志结构体的开始标识;seq字段为日志数据的序列号,在程序生命周期内是自增的;length字段为日志结构体中的log字段的长度;crypt key字段为加密所用的密钥;log字段为压缩加密后的日志数据;magic end num字段为日志结构体的结束标识;省略号代表可以基于实际需求添加其它字段。本实施例中,可以将每条压缩加密后的日志数据分别封装在一个日志结构体中,进行缓存,也可以将应用缓存中缓存的所有日志数据封装在一个日志结构体中,即每得到一条加密压缩后的日志数据,则将其添加到应用缓存中的日志结构体中的log字段,并基于log字段的更新,对length字段进行更新。
可选的,应用程序向系统程序申请应用缓存的方式可以多种多样,本实施例中,以通过mmap(一种具有缓存调用功能的函数的名称)函数申请缓存和通过shm(一种具有缓存调用功能的函数的名称)函数申请缓存为例,进行方案的详细说明。通过不同的方式申请的应用缓存,会具有不同的工作机制,下面将结合应用程序异常退出后对缓存日志数据进行恢复的处理过程,对缓存的不同工作机制进行介绍:
方式一,缓存日志数据的处理可以是:将每条压缩后的日志数据,写入应用程序调用的用于日志数据存储的缓存中。相应的,该应用程序异常关闭时的处理可以是:每当应用程序异常关闭时,将该缓存中的日志数据写入预先建立的该缓存对应的映射文件中。相应的,对日志数据进行恢复的处理可以是:每当该应用程序启动时,如果该缓存对应的映射文件不为空,则将映射文件中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空该映射文件。
下面以应用程序通过mmap函数申请缓存为例。相应的,缓存日志数据的处理可以是:将每条压缩后的日志数据,写入应用程序调用的用于日志数据存储的mmap缓存中。为了在应用程序异常退出后可以对缓存日志数据进行恢复,可以在每次应用程序启动时,进行如下处理:每当应用程序启动时,如果mmap缓存对应的mmap文件不为空,则将mmap文件中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空mmap文件。
在实施中,应用程序启动后可以通过mmap函数向系统程序申请用于日志数据存储的缓存,此通过mmap函数申请的缓存可称作mmap缓存。应用程序会在指定的路径,对应此用于日志数据存储的mmap缓存,建立一个mmap文件,并在申请mmap缓存时将该路径通知系统程序。一般在应用程序正常运行的状态下,mmap文件为空。当系统程序检测到应用程序异常关闭时,系统程序会将mmap缓存中的数据写入对应的mmap文件中。可以为应用程序设置一个启动处理机制,每当应用程序启动时,检测上述指定的路径存储的mmap文件。如果检测到该mmap文件,则进一步检测该mmap文件是否为空,如果不为空,则说明上一次应用程序关闭属于异常关闭,且系统程序将异常关闭后mmap缓存中残存的日志文件写入到该mmap文件中,此时,可以将mmap文件中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空mmap文件,通过此标记,技术人员在浏览日志文件时可以获知应用程序出现异常关闭,这里进行标记的方式可以是在日志结构体的前后增加特定的标识字段。如果在指定的路径没有查找到该mmap文件,说明该应用程序是安装后第一次运行,此时,可以通过mmap函数向系统程序申请用于日志数据存储的mmap缓存,并建立对应的mmap文件。如果在指定的路径能查找到mmap文件,但mmap文件为空,则说明应用程序上一次关闭是正常关闭,可以不做任何处理。
方式二,缓存日志数据的处理可以是:将每条压缩后的日志数据,写入应用程序调用的用于日志数据存储的缓存中。相应的,该应用程序异常关闭和正常关闭时的处理分别可以是:每当该应用程序正常关闭时,清空该缓存中的日志数据,每当该应用程序异常关闭时,保留该缓存中的日志数据。相应的,对日志数据进行恢复的处理可以是:每当该应用程序启动时,如果该缓存不为空,则将该缓存中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空该缓存。
下面以应用程序通过shm函数申请缓存为例。相应的,缓存日志数据的处理可以是:将每条压缩后的日志数据,写入应用程序调用的用于日志数据存储的shm缓存中。为了在应用程序异常退出后可以对缓存日志数据进行恢复,可以在每次应用程序启动时,进行如下处理:每当应用程序启动时,如果shm缓存不为空,则将shm缓存中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空shm缓存。
在实施中,应用程序启动后可以通过shm函数向系统程序申请用于日志数据存储的缓存,此通过shm函数申请的缓存可称作shm缓存。系统程序会将应用程序指定的缓存标识与该shm缓存的位置对应存储。应用程序正常关闭时,系统程序会清空shm缓存中的数据,应用程序非正常关闭时,shm缓存中的数据会保留。可以为应用程序设置一个启动处理机制,每当应用程序启动时,向系统程序查询上述指定的缓存标识对应的shm缓存是否为空。如果系统程序返回的结果不为空,则说明上一次应用程序关闭属于异常关闭,此时可以将shm缓存中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空shm缓存,通过此标记,技术人员在浏览日志文件时可以获知应用程序出现异常关闭,这里进行标记的方式可以是在日志结构体的前后增加特定的标识字段。如果系统程序返回的结果为空,则说明应用程序上一次关闭是正常关闭,或者应用程序是安装后第一次运行,可以不做任何处理。
步骤103,每当缓存的日志数据满足预设导出条件时,将缓存的日志数据写入日志文件中,并清除缓存的日志数据。
在实施中,随着应用程序的不断运行,应用缓存中的日志数据的数据量会不断的增加。应用程序可以对应用缓存中的日志数据的数据量进行实时检测,这里检测的数据量可以是日志数据被封装成日志结构体后的数据量,或者可以认为是检测该应用程序调用的用于日志数据存储的mmap缓存或shm缓存中当前存储数据的数据量。导出条件可以根据实际需求任意设置。每当检测到缓存日志数据的数据量满足预设导出条件时,应用程序则可以向系统程序发送写入请求。进而,系统程序可以将应用缓存中的日志数据调入系统缓存,再将日志数据由系统缓存写入指定的日志文件。此时,应用程序可以对应用缓存中的日志数据进行清除,清除之后,应用缓存中的日志数据的数据量归零。
终端在某些情况下可以将日志文件上传给服务器,例如,用户在应用程序故障需要技术人员协助解决时,操作应用程序将日志文件上传给服务器。技术人员可以操作管理终端在服务器中获取用户上传的日志文件,对日志文件中压缩的日志数据进行解压缩,并按时间顺序显示每条日志数据。技术人员可以浏览日志数据,并对应用程序进行运行状态分析和故障分析等。
可选的,预设导出条件可以设置如下:每当缓存的日志数据的数据量达到预设阈值或在预设时长内未发生变化时,将缓存的日志数据写入日志文件中,并清除缓存的日志数据。
其中,预设阈值的设置,可以基于处理资源突发性占用和处理时延进行综合考虑。预设阈值不宜设置的过高,这样可以防止一次性写入日志文件的数据量过大,从而可以降低处理资源的突发性占用。而且,预设阈值不宜设置过低,这样可以防止应用程序处理和系统程序处理之间切换的频率过高,长期来看可以减小整体的处理时延。该预设阈值的设置,还可以结合终端存储资源的情况进行考虑。该预设阈值的取值范围可以是20~80K。
预设时长的设置,可以基于日志数据记录的及时性和处理时延进行综合考虑。预设时长不宜设置的过长,这样可以提高日志数据记录的及时性。而且,预设时长不宜设置过短,这样可以防止应用程序处理和系统程序处理之间切换的频率过高,长期来看可以减小整体的处理时延。该预设时长的取值范围可以是5~20分钟。
在实施中,应用程序每缓存一条日志数据,则可以计算当前缓存的日志数据的数据量。如果该数据量大于或者等于预设阈值(如50K),则触发将缓存的日志数据写入日志文件中,并清除缓存的日志数据。同时,在每次缓存的日志数据的数据量发生变化后,应用程序可以进行计时,如果计时达到预设时长(如15分钟)时该数据量还没有发生新的变化,则触发将缓存的日志数据写入日志文件中,并清除缓存的日志数据。
如图4所示,本发明又一实施例提供的记录日志数据的方法的处理流程可以包括如下的步骤:
步骤401,每当应用程序生成日志数据时,终端获取当前生成的日志数据。
步骤402,终端对日志数据进行日志格式化。
步骤403,终端以mmap缓存中的日志数据为参考数据,对当前生成的日志数据进行压缩。
这里采用的压缩方式为流式压缩,流式压缩的基本压缩元素为单条日志数据。此mmap缓存是应用程序向系统程序申请的用于日志数据存储的mmap缓存。
步骤404,终端对压缩后的日志数据进行加密。
步骤405,终端将加密压缩后的日志数据以日志结构体的形式写入mmap缓存中。
步骤406,每当mmap缓存中日志数据的数据量达到预设阈值或在预设时长内未发生变化时,将mmap缓存中的日志数据写入日志文件中,并清除mmap缓存中的日志数据。
具体的处理细节可以参考上面的实施例。
如图5所示,本发明又一实施例提供的应用程序启动过程中进行日志数据找回的处理流程可以包括如下的步骤:
步骤501,每当应用程序启动时,终端检测预设路径处是否存储有mmap文件,如果是,则执行步骤502,否则执行步骤504。其中,该mmap文件是应用程序向系统程序申请的用于日志数据存储的mmap缓存对应的mmap文件。
步骤502,检测在该mmap文件中是否存有数据,如果是,则执行步骤503,否则结束日志数据找回处理。
步骤503,将该mmap文件中的数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空该mmap文件中的数据。该步骤执行完毕后结束日志数据找回处理。
步骤504,在预设路径处,新建mmap文件。该步骤执行完毕后结束日志数据找回处理。
具体的处理细节可以参考上面的实施例。
本发明实施例中,采用流式压缩的方式,每生成一条日志数据即可以压缩一条日志数据,每次压缩的数据量比较小,不会突发性的占用大量的处理资源,从而,可以减少应用程序的卡顿。另外,每条日志数据进行流式压缩所产生的时延,远小于应用程序处理和系统程序处理之间的切换所产生的时延。
基于相同的技术构思,本发明实施例还提供了一种记录日志数据的装置,该装置可以是上述实施例中的终端,可以用于执行上述实施例中的方法,如图6所示,该装置包括:
获取模块610,用于获取应用程序生成的日志数据;
缓存模块620,用于以单条日志数据为基本压缩元素,对生成的日志数据逐条进行流式压缩,对每条压缩后的日志数据进行缓存;
写入模块630,用于每当缓存的日志数据满足预设导出条件时,将缓存的日志数据写入日志文件中,并清除缓存的日志数据。
可选的,所述缓存模块620,用于:
每当生成一条日志数据时,如果当前缓存有日志数据,则以当前缓存的日志数据为参考数据,对当前生成的日志数据进行压缩,如果当前未缓存有日志数据,则不参考其它日志数据,对当前生成的日志数据进行压缩。
可选的,所述缓存模块620,用于:
将每条压缩后的日志数据,写入所述应用程序调用的用于日志数据存储的mmap缓存中。
可选的,所述写入模块630,还用于:
每当所述应用程序启动时,如果所述mmap缓存对应的mmap文件不为空,则将所述mmap文件中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空所述mmap文件。
可选的,所述缓存模块620,用于:将每条压缩后的日志数据,写入所述应用程序调用的用于日志数据存储的缓存中;
所述缓存模块620,还用于:每当所述应用程序异常关闭时,将所述缓存中的日志数据写入预先建立的所述缓存对应的映射文件中;
所述写入模块630,还用于:每当所述应用程序启动时,如果所述缓存对应的映射文件不为空,则将所述映射文件中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空所述映射文件。
可选的,所述缓存模块620,用于:
将每条压缩后的日志数据,写入所述应用程序调用的用于日志数据存储的shm缓存中。
可选的,所述写入模块630,还用于:
每当所述应用程序启动时,如果所述shm缓存不为空,则将所述shm缓存中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空所述shm缓存。
可选的,所述缓存模块620,用于:将每条压缩后的日志数据,写入所述应用程序调用的用于日志数据存储的缓存中;
所述缓存模块620,还用于:每当所述应用程序正常关闭时,清空所述缓存中的日志数据,每当所述应用程序异常关闭时,保留所述缓存中的日志数据;
所述写入模块630,还用于:每当所述应用程序启动时,如果所述缓存不为空,则将所述缓存中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空所述缓存。
可选的,所述缓存模块620,用于:
对每条压缩后的日志数据进行加密,对压缩加密后的日志数据进行缓存。
可选的,所述写入模块630,用于:
每当缓存的日志数据的数据量达到预设阈值或在预设时长内未发生变化时,将缓存的日志数据写入日志文件中。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本发明实施例中,采用流式压缩的方式,每生成一条日志数据即可以压缩一条日志数据,每次压缩的数据量比较小,不会突发性的占用大量的处理资源,从而,可以减少应用程序的卡顿。
需要说明的是:上述实施例提供的记录日志数据的装置在记录日志数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的记录日志数据的装置与记录日志数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图7,其示出了本发明实施例所涉及的终端的结构示意图,该终端可以用于实施上述实施例中提供的记录日志数据的方法。具体来讲:
终端700可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(wireless fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图7中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端700的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端700的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图7中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
终端700还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端700移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端700还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与终端700之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端700的通信。
WiFi属于短距离无线传输技术,终端700通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块170,但是可以理解的是,其并不属于终端700的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是终端700的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端700的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端700还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端700还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端700的显示单元是触摸屏显示器,终端700还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行此一个或者一个以上程序来执行上述各个实施例所述的记录日志数据的方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种记录日志数据的方法,其特征在于,所述方法包括:
获取应用程序生成的日志数据;
每当生成一条日志数据时,如果当前缓存有日志数据,则以当前缓存的日志数据为参考数据,对当前生成的日志数据进行压缩,如果当前未缓存有日志数据,则不参考其它日志数据,对当前生成的日志数据进行压缩,对每条压缩后的日志数据进行缓存;
每当缓存的日志数据满足预设导出条件时,将缓存的日志数据写入日志文件中,并清除缓存的日志数据。
2.根据权利要求1所述的方法,其特征在于,所述对每条压缩后的日志数据进行缓存,包括:
将每条压缩后的日志数据,写入所述应用程序调用的用于日志数据存储的缓存中;
所述方法还包括:
每当所述应用程序异常关闭时,将所述缓存中的日志数据写入预先建立的所述缓存对应的映射文件中;
每当所述应用程序启动时,如果所述缓存对应的映射文件不为空,则将所述映射文件中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空所述映射文件。
3.根据权利要求1所述的方法,其特征在于,所述对每条压缩后的日志数据进行缓存,包括:
将每条压缩后的日志数据,写入所述应用程序调用的用于日志数据存储的缓存中;
所述方法还包括:
每当所述应用程序正常关闭时,清空所述缓存中的日志数据,每当所述应用程序异常关闭时,保留所述缓存中的日志数据;
每当所述应用程序启动时,如果所述缓存不为空,则将所述缓存中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空所述缓存。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述每当缓存的日志数据满足预设导出条件时,将缓存的日志数据写入日志文件中,包括:
每当缓存的日志数据的数据量达到预设阈值或在预设时长内未发生变化时,将缓存的日志数据写入日志文件中。
5.一种记录日志数据的装置,其特征在于,所述装置包括:
获取模块,用于获取应用程序生成的日志数据;
缓存模块,用于每当生成一条日志数据时,如果当前缓存有日志数据,则以当前缓存的日志数据为参考数据,对当前生成的日志数据进行压缩,如果当前未缓存有日志数据,则不参考其它日志数据,对当前生成的日志数据进行压缩,对每条压缩后的日志数据进行缓存;
写入模块,用于每当缓存的日志数据满足预设导出条件时,将缓存的日志数据写入日志文件中,并清除缓存的日志数据。
6.根据权利要求5所述的装置,其特征在于,所述缓存模块,用于:将每条压缩后的日志数据,写入所述应用程序调用的用于日志数据存储的缓存中;
所述缓存模块,还用于:每当所述应用程序异常关闭时,将所述缓存中的日志数据写入预先建立的所述缓存对应的映射文件中;
所述写入模块,还用于:每当所述应用程序启动时,如果所述缓存对应的映射文件不为空,则将所述映射文件中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空所述映射文件。
7.根据权利要求5所述的装置,其特征在于,所述缓存模块,用于:将每条压缩后的日志数据,写入所述应用程序调用的用于日志数据存储的缓存中;
所述缓存模块,还用于:每当所述应用程序正常关闭时,清空所述缓存中的日志数据,每当所述应用程序异常关闭时,保留所述缓存中的日志数据;
所述写入模块,还用于:每当所述应用程序启动时,如果所述缓存不为空,则将所述缓存中的日志数据,标记为因应用程序异常关闭而丢失的日志数据,写入日志文件中,并清空所述缓存。
8.根据权利要求5-7中任一项所述的装置,其特征在于,所述写入模块,用于:
每当缓存的日志数据的数据量达到预设阈值或在预设时长内未发生变化时,将缓存的日志数据写入日志文件中。
CN201611209026.2A 2016-12-23 2016-12-23 一种记录日志数据的方法和装置 Active CN106649735B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611209026.2A CN106649735B (zh) 2016-12-23 2016-12-23 一种记录日志数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611209026.2A CN106649735B (zh) 2016-12-23 2016-12-23 一种记录日志数据的方法和装置

Publications (2)

Publication Number Publication Date
CN106649735A CN106649735A (zh) 2017-05-10
CN106649735B true CN106649735B (zh) 2020-01-10

Family

ID=58827433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611209026.2A Active CN106649735B (zh) 2016-12-23 2016-12-23 一种记录日志数据的方法和装置

Country Status (1)

Country Link
CN (1) CN106649735B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766202A (zh) * 2017-09-30 2018-03-06 努比亚技术有限公司 基于Log4j的日志写入方法、装置及计算机可读存储介质
CN108228417B (zh) * 2017-11-30 2022-01-28 北京九五智驾信息技术股份有限公司 车联网日志处理方法及处理装置
CN108647132A (zh) * 2018-04-11 2018-10-12 中国电子科技集团公司第十四研究所 一种记录报文数据的方法和装置
CN108763108A (zh) * 2018-06-04 2018-11-06 中国电子科技集团公司第十四研究所 记录报文数据的装置及方法
US11303296B2 (en) 2018-06-26 2022-04-12 International Business Machines Corporation Hardware accelerated compression of instrumentation data
CN111177104B (zh) * 2019-12-28 2022-04-22 浪潮(北京)电子信息产业有限公司 一种nas存储系统的日志下刷方法及装置
CN112069519A (zh) * 2020-09-08 2020-12-11 陕西上讯信息技术有限公司 一种输出信息文件加密记录的方法及设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004780A (zh) * 2010-11-23 2011-04-06 中兴通讯股份有限公司 一种数据同步方法及装置
CN102790686A (zh) * 2011-05-17 2012-11-21 浙江核新同花顺网络信息股份有限公司 日志数据采集方法、系统及服务器
CN102891873A (zh) * 2011-07-21 2013-01-23 腾讯科技(深圳)有限公司 一种存储日志数据的方法及日志数据存储系统
CN104216811A (zh) * 2013-05-30 2014-12-17 腾讯科技(深圳)有限公司 应用程序的日志收集方法和系统
CN104239538A (zh) * 2014-09-22 2014-12-24 北京国双科技有限公司 一种快照型日志压缩方法、系统及装置
CN105516307A (zh) * 2015-12-09 2016-04-20 浪潮电子信息产业股份有限公司 一种基于压缩的优化云存储系统日志存储的方法
CN106156355A (zh) * 2016-07-27 2016-11-23 腾讯科技(深圳)有限公司 日志处理方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004780A (zh) * 2010-11-23 2011-04-06 中兴通讯股份有限公司 一种数据同步方法及装置
CN102790686A (zh) * 2011-05-17 2012-11-21 浙江核新同花顺网络信息股份有限公司 日志数据采集方法、系统及服务器
CN102891873A (zh) * 2011-07-21 2013-01-23 腾讯科技(深圳)有限公司 一种存储日志数据的方法及日志数据存储系统
CN104216811A (zh) * 2013-05-30 2014-12-17 腾讯科技(深圳)有限公司 应用程序的日志收集方法和系统
CN104239538A (zh) * 2014-09-22 2014-12-24 北京国双科技有限公司 一种快照型日志压缩方法、系统及装置
CN105516307A (zh) * 2015-12-09 2016-04-20 浪潮电子信息产业股份有限公司 一种基于压缩的优化云存储系统日志存储的方法
CN106156355A (zh) * 2016-07-27 2016-11-23 腾讯科技(深圳)有限公司 日志处理方法及装置

Also Published As

Publication number Publication date
CN106649735A (zh) 2017-05-10

Similar Documents

Publication Publication Date Title
CN106649735B (zh) 一种记录日志数据的方法和装置
CN106598584B (zh) 一种处理资源文件的方法、装置和系统
WO2018049887A1 (zh) 数据传输处理方法及终端设备
EP3499786B1 (en) Data synchronization method, apparatus, storage medium and electronic device
WO2015154670A1 (en) Method and apparatus for invoking application programming interface
CN111078523B (zh) 日志获取方法、装置、存储介质及电子设备
WO2014190830A1 (zh) 录音同步方法、装置和设备
CN109714476B (zh) 数据处理方法、装置、移动终端及存储介质
CN104123276A (zh) 一种浏览器中弹窗的拦截方法、装置和系统
CN107766222B (zh) 黑屏检测方法、移动终端及计算机可读存储介质
CN106708555B (zh) 一种加载插件的方法和装置
CN109688611B (zh) 一种频段参数的配置方法、装置、终端和存储介质
CN111104180A (zh) 应用程序优化方法、装置、存储介质及电子设备
CN107872367B (zh) 黑屏检测方法、移动终端及计算机可读存储介质
CN108170360B (zh) 一种手势功能的控制方法及移动终端
CN104346128A (zh) 声音事件的执行方法和设备
CN107688498B (zh) 应用程序处理方法和装置、计算机设备、存储介质
CN108319862B (zh) 一种数据文件处理的方法和装置
CN105872041B (zh) 操作对象的处理方法及装置
CN105302589A (zh) 一种获取卸载信息的方法及装置
CN112596980A (zh) ios性能收集方法及装置、移动终端、计算机可读存储介质
CN113961380A (zh) 一种跨应用修复的方法、装置、设备及存储介质
CN107315623B (zh) 一种上报统计数据的方法和装置
CN108804256A (zh) 一种服务器的数据处理方法和装置
CN111143580A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20231225

Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors

Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.

Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd.

Address before: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors

Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.

TR01 Transfer of patent right