CN111611217A - 一种日志记录方法及装置 - Google Patents
一种日志记录方法及装置 Download PDFInfo
- Publication number
- CN111611217A CN111611217A CN201910133579.1A CN201910133579A CN111611217A CN 111611217 A CN111611217 A CN 111611217A CN 201910133579 A CN201910133579 A CN 201910133579A CN 111611217 A CN111611217 A CN 111611217A
- Authority
- CN
- China
- Prior art keywords
- log
- log file
- memory address
- file
- 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.)
- Pending
Links
Images
Classifications
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种日志记录方法及装置,其中所述方法包括:在日志文件中增加第一空白区段;将所述第一空白区段映射至第一内存地址;将需要记录的日志数据写入到所述第一内存地址中,从而将所述日志数据写入到所述日志文件中。本发明解决了现有技术的日志写入效率低,发生崩溃时日志数据的完整性难以保证的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种日志记录方法及装置。
背景技术
一般在系统或软件的运行过程中都会记录日志,日志可以记录软件运行过程中的操作,软件中数据产生的变化等。某些情况下,在系统或软件崩溃后可通过分析日志,查找出崩溃的原因,并予以处理解决。
现有的写日志方法有:一、普通文件写日志,这种方式的日志记录效率很低;二、采用缓存日志分批写入的方式,这种方式虽可提高日志记录的效率,但是又会引起当软件发生崩溃时导致缓存中的数据丢失,无法写入磁盘的问题。因此,现有技术存在着日志写入效率低,且发生崩溃时日志的完整性难以保证的问题。
发明内容
鉴于上述问题,本发明提出了一种日志记录方法及装置,解决了现有技术的日志写入效率低,发生崩溃时日志数据的完整性难以保证的问题。
第一方面,本申请通过一实施例提供如下技术方案:
一种日志记录方法,所述方法包括:
在日志文件中增加第一空白区段;将所述第一空白区段映射至第一内存地址;将需要记录的日志数据写入到所述第一内存地址中,从而将所述日志数据写入到所述日志文件中。
优选地,所述在日志文件中增加第一空白区段,包括:
在所述日志文件中确定可写入日志数据的起始位置;在所述起始位置之后增加所述第一空白区段。
优选地,所述在所述日志文件中确定可写入日志数据的起始位置,包括:
获取当前操作系统的页面大小以及所述日志文件的内容长度;根据所述页面大小以及所述日志文件的内容长度,确定可写入日志数据的起始位置。
优选地,所述根据所述页面大小以及所述日志文件的内容长度,确定可写入日志数据的起始位置,包括:
根据所述页面大小以及所述日志文件的内容长度,确定所述日志文件对应的末尾页面;将所述末尾页面作为可写入日志数据的起始位置。
优选地,所述在所述起始位置之后增加所述第一空白区段,包括:
获取所述起始位置对应的第一长度;获取所述第一空白区段对应的第二长度;将所述日志文件的内容长度调整为所述第一长度加上所述第二长度后形成的总长度。
优选地,所述在日志文件中增加第一空白区段之前,还包括:
基于从metadata文件中读取的所述日志文件的路径,打开所述日志文件;若打开失败,则在所述路径下新建所述日志文件。
优选地,所述将需要记录的日志数据写入到所述第一内存地址中之后,还包括:
若所述第一内存地址被写满,则关闭所述第一内存地址与所述第一空白区段之间的映射;在所述日志文件中继续增加第二空白区段;将所述第二空白区段映射至第二内存地址;将需要记录的日志数据写入到所述第二内存地址中,从而将所述日志数据写入到所述日志文件中。
优选地,所述将需要记录的日志数据写入到所述第一内存地址中之后,还包括:
若所述第一内存地址被写满,则关闭所述第一内存地址与所述第一空白区段之间的映射;判断所述日志文件的当前内容长度是否达到预设长度;若是,则新建一新的日志文件;在所述新的日志文件中增加第三空白区段;将所述第三空白区段映射至第三内存地址;将需要记录的日志数据写入到所述第三内存地址中,从而将所述日志数据写入到所述新的日志文件中。
第二方面,基于同一发明构思,本申请通过一实施例提供如下技术方案:
一种日志记录装置,所述装置包括:
空白区段新增模块,用于在日志文件中增加第一空白区段;映射模块,用于将所述第一空白区段映射至第一内存地址;日志写入模块,用于将需要记录的日志数据写入到所述第一内存地址中,从而将所述日志数据写入到所述日志文件中。
优选地,所述空白区段新增模块还用于:
在所述日志文件中确定可写入日志数据的起始位置;在所述起始位置之后增加所述第一空白区段。
优选地,所述空白区段新增模块还用于:
获取当前操作系统的页面大小以及所述日志文件的内容长度;根据所述页面大小以及所述日志文件的内容长度,确定可写入日志数据的起始位置。
优选地,所述空白区段新增模块还用于:
根据所述页面大小以及所述日志文件的内容长度,确定所述日志文件对应的末尾页面;将所述末尾页面作为可写入日志数据的起始位置。
优选地,所述空白区段新增模块还用于:
获取所述起始位置对应的第一长度;获取所述第一空白区段对应的第二长度;将所述日志文件的内容长度调整为所述第一长度加上所述第二长度后形成的总长度。
优选地,还包括:读取模块,用于
在所述在日志文件中增加第一空白区段之前,基于从metadata文件中读取的所述日志文件的路径,打开所述日志文件;若打开失败,则在所述路径下新建所述日志文件。
优选地,还包括:第一循环模块,用于
在所述将需要记录的日志数据写入到所述第一内存地址中之后,若所述第一内存地址被写满,则关闭所述第一内存地址与所述第一空白区段之间的映射;在所述日志文件中继续增加第二空白区段;将所述第二空白区段映射至第二内存地址;将需要记录的日志数据写入到所述第二内存地址中,从而将所述日志数据写入到所述日志文件中。
优选地,还包括:第二循环模块,
用于在所述将需要记录的日志数据写入到所述第一内存地址中之后,若所述第一内存地址被写满,则关闭所述第一内存地址与所述第一空白区段之间的映射;判断所述日志文件的当前内容长度是否达到预设长度;若是,则新建一新的日志文件;在所述新的日志文件中增加第三空白区段;将所述第三空白区段映射至第三内存地址;将需要记录的日志数据写入到所述第三内存地址中,从而将所述日志数据写入到所述新的日志文件中。
第三方面,基于同一发明构思,本申请通过一实施例提供如下技术方案:
一种日志记录装置,包括处理器和存储器,所述存储器耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时使所述日志记录装置执行上述第一方面中任一项所述方法的步骤。
第四方面,基于同一发明构思,本申请通过一实施例提供如下技术方案:
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面中任一项所述方法的步骤。
本发明实施例提供的一种日志记录方法及装置,通过直接在日志文件中增加第一空白区段,然后以内存映射文件的形式将日志文件的第一空白区段映射到第一内存地址中,然后在第一内存地址中进行日志数据的写入,由于内存映射文件读写效率远大于普通的磁盘读写,在第一内存地址中对日志文件的映射内容进行操作可相当于直接对磁盘中的日志文件进行操作,大大提高了日志的写入效率;同时由于需要写日志的程序的运行不影响内存映射文件,可在程序发生崩溃时保证日志记录的完整性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明第一实施例提供的一种日志记录方法的流程图;
图2示出了图1步骤S10的子步骤流程图;
图3示出了本发明第二实施例提供的一种日志记录装置的功能模块图;
图4示出了本发明第三实施例提供的一种日志记录装置的模块框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
第一实施例
请参阅图1,在本实施例中提供一种日志记录方法,图1示出了方法的步骤流程图,所述方法具体包括:
步骤S10:在日志文件中增加第一空白区段。
步骤S20:将所述第一空白区段映射至第一内存地址。
步骤S30:将需要记录的日志数据写入到所述第一内存地址中,从而将所述日志数据写入到所述日志文件中。
在步骤S10中,日志文件为记录有日志数据的文件,第一空白区段用于写入需要进行记录的日志数据。具体的,请参阅图2,步骤S10包括子步骤:
步骤S11:在所述日志文件中确定可写入日志数据的起始位置。
在步骤S11中,起始位置应当位于日志文件的末尾之后,例如,可将日志文件的末尾作为起始位置。本实施例中,提供一种具体的实施方式:
首先,获取当前操作系统的页面大小以及日志文件的内容长度。其中,可通过编写测试程序的方式获取当前操作系统的页面大小。当当前操作系统的页面大小为已知的时候,可直接输入和使用;例如,在某些操作系统中,页面大小可为4K(4096字节)。
在日志系统的文件结构中包括metadata文件与日志内容文件。metadata文件,用来储存每个日志文件的元信息,例如文件路径、文件(内容)长度、创建时间等;日志内容文件,用来储存真正的日志数据片段。进一步的,日志文件的内容长度的获取方式具体可如下:采用内存映射文件的方式,从metadata文件中读取日志文件的内容长度。其中,内容长度即为记录有日志数据的总长度。由于操作系统要求内存映射文件的大小必须是页面大小的整数倍,当前操作系统可为:Linux,Android,Windows,iOS等,不做限制。
然后,根据页面大小以及日志文件的内容长度,确定可写入日志数据的起始位置。例如:
可根据nMapStart=(nDataLength/nPageSize)*nPageSize计算起始位置,其中nMapStart为起始位置,nDataLength为日志文件的内容长度,nPageSize为页面大小。
以一具体实例进行说明,当前日志文件的末尾页面为第3个页面时,那么可将该第3个页面作为写入待记录的日志数据的起始位置;同时,若将该起始位置所在页面映射至目标内存地址,并用于写入日志数据可保证日志数据写入目标日志文件中的连续性。
另外,在某些实施例中,起始位置可与该末尾页面之间间隔任意数量的页面;例如,日志文件的末尾页面为第3个页面时,那么可将日志文件长度进行增加,然后将第4(第5、第6、第7等)个页面作为起始位置。
步骤S12:在所述起始位置之后增加所述第一空白区段。
在步骤S12中,具体增加的方式为:获取起始位置对应的第一长度;获取第一空白区段对应的第二长度;将日志文件的内容长度调整为第一长度加上第二长度后形成的总长度。其中,起始位置对应的第一长度可为日志文件的当前的内容长度,也可小于当前的内容长度;第一空白区段对应的第二长度即为第一空白区段的长度。
例如,调整后的长度为:nMapStart+nMapSize,其中nMapSize为映射长度,nMapStart为起始位置。
需要说明的是,在增加第一空白区段之前,具体的在步骤S10之前,还需要对基于从metadata文件中读取的该日志文件的路径,打开所述日志文件;若打开失败,则说明日志文件不存在;例如,被删除,或第一进行日志数据的记录时,还未创建日志文件。此时,应在该路径下新建一日志文件。
步骤S20:将所述第一空白区段映射至第一内存地址。
在步骤S20中,由于操作系统的要求,第一空白区段的长度应当为页面大小的整数倍,具体大小不做限定。第一内存地址为根据第一空白区段大小所分配的地址。进一步的,第一空白区段的长度太大会导致运行内存占用过多,第一空白区段的长度太小会导致映射的频率升高导致性能下降;因此第一空白区段的长度可根据页面大小,进行合理确定,例如取值范围为32K-128K之间符合页面大小整数倍的值,如具体为32K、64K、128K等。
例如,页面大小为nPageSize,第一空白区段的长度为nMapSize,那么nMapSize=N*nPageSize,其中可根据nPageSize的大小合理选取N的值,如使mMapSize=64K。
在步骤S20中,日志文件中起始位置所对应的页面也可能存在继续写入日志数据的空间,在映射第一空白区段至第一内存地址时,可将起始位置所对应的页面以及第一空白区段一同映射至第一内存地址,以此可保证日志数据写入目标日志文件中的连续性,且避免占用过多内存。此外,仅映射整个日志文件的内容到第一内存地址,仅映射第一空白区段与日志文件中包含起始位置的区段到第一内存地址,均可作为可实施的方案。
步骤S30:将需要记录的日志数据写入到所述第一内存地址中,从而将所述日志数据写入到所述日志文件中。
在步骤S30中,由于第一内存地址与日志文件的空白区段建立了映射关系,日志数据直接写入到第一内存地址,即可实现对日志文件本身的记录和同步。在步骤S30执行的同时,还应当对应修改日志文件对应的metadata文件中的内容长度,在日志文件的第一空白区段被记录满之后,继续增加第二空白区段时,可方便从新计算日志文件的起始位置。
在步骤S30之后,若所述第一内存地址被写满,第一空白区段也将被写满。此时,可关闭第一内存地址与第一空白区段之间的映射;在日志文件中继续增加第二空白区段,第二空白区段的长度可与第一空白区段相同,也可不同。将第二空白区段映射至第二内存地址,第二内存地址的位置可与第一内存地址的位置相同或不同,第二内存地址的大小可与第一内存地址的大小相同或不同。最后,将需要记录的日志数据写入到第二内存地址中,从而将日志数据写入到日志文件中。并依次循环执行上述步骤的以持续记录需要进行记录的日志数据。
进一步的,便于日志文件的分段管理和查看,可设置单个日志文件的最大长度。在步骤S30之后,若第一内存地址被写满,则关闭第一内存地址与所述第一空白区段之间的映射;并判断日志文件的当前内容长度是否达到(等于或超过)预设长度;若是,则新建一新的日志文件;并在新的日志文件中增加第三空白区段,可在新建新的日志文件时可直接新建包含第三空白区段的日志文件,同样的第三空白区段的大小可与第一空白区段或第二空白区段相同或不同;将第三空白区段映射至第三内存地址,同样的第三内存地址的大小及位置可与第二内存地址或第一内存地址对应的大小及位置相同或不同;最后,将需要记录的日志数据写入到第三内存地址中,从而将日志数据写入到该新的日志文件中。
通过单个日志文件的最大内容长度的限定(即本实施例中设定日志文件的最大内容长度应小于等于预设长度),实现了日志文件的分段管理,进一步的每创建一个日志文件可通过顺序号的形式进行区分,例如1、2、3等。另外,还可进行分日期管理:在日志文件名中加入年月日,可以按天来独立存储不同时间形成的日志文件。
为了避免日志文件大量占用磁盘,本实施例中还提供如下的删除策略:
1、可以设置保留日志文件的时间长短,自动删除比较早的日志文件。
2、可以设置保留日志文件占用的最大空间,超过后删除日期最早的日志文件。
3、可以设置保留文件占用磁盘空间的百分比,超过后删除日期最早的日志文件。
4、可以设置磁盘剩余空间的最小值,小于该值则删除日期最早的日志文件。
综上,本发明实施例提供的一种日志记录方法,通过直接在日志文件中增加第一空白区段,然后以内存映射文件的形式将日志文件的第一空白区段映射到第一内存地址中,然后在第一内存地址中进行日志数据的写入,由于内存映射文件读写效率远大于普通的磁盘读写,在第一内存地址中对日志文件的映射内容进行操作可相当于直接对磁盘中的日志文件进行操作,大大提高了日志的写入效率;同时由于需要写日志的程序的运行不影响内存映射文件,可在程序发生崩溃时保证日志记录的完整性。
第二实施例
基于同一发明构思,本发明第二实施例提供了一种日志记录装置。图3示出了本发明第二实施例提供的一种日志记录装置的功能模块框图。
具体的,所述日志记录装置,包括:
空白区段新增模块401,用于在日志文件中增加第一空白区段。
映射模块402,用于将所述第一空白区段映射至第一内存地址。
日志写入模块403,用于将需要记录的日志数据写入到所述第一内存地址中,从而将所述日志数据写入到所述日志文件中。
作为一种可选的实施方式,所述空白区段新增模块401还用于:
在所述日志文件中确定可写入日志数据的起始位置;
在所述起始位置之后增加所述第一空白区段。
作为一种可选的实施方式,所述空白区段新增模块401还用于:
获取当前操作系统的页面大小以及所述日志文件的内容长度;
根据所述页面大小以及所述日志文件的内容长度,确定可写入日志数据的起始位置。
作为一种可选的实施方式,所述空白区段新增模块401还用于:
根据所述页面大小以及所述日志文件的内容长度,确定所述日志文件对应的末尾页面;
将所述末尾页面作为可写入日志数据的起始位置。
作为一种可选的实施方式,所述空白区段新增模块401还用于:
获取所述起始位置对应的第一长度;获取所述第一空白区段对应的第二长度;将所述日志文件的内容长度调整为所述第一长度加上所述第二长度后形成的总长度。
作为一种可选的实施方式,还包括:读取模块,用于
在所述在日志文件中增加第一空白区段之前,基于从metadata文件中读取的所述日志文件的路径,打开所述日志文件;
若打开失败,则在所述路径下新建所述日志文件。
作为一种可选的实施方式,还包括:第一循环模块,用于
在所述将需要记录的日志数据写入到所述第一内存地址中之后,
若所述第一内存地址被写满,则关闭所述第一内存地址与所述第一空白区段之间的映射;
在所述日志文件中继续增加第二空白区段;
将所述第二空白区段映射至第二内存地址;
将需要记录的日志数据写入到所述第二内存地址中,从而将所述日志数据写入到所述日志文件中。
作为一种可选的实施方式,还包括:第二循环模块,
用于在所述将需要记录的日志数据写入到所述第一内存地址中之后,
若所述第一内存地址被写满,则关闭所述第一内存地址与所述第一空白区段之间的映射;
判断所述日志文件的当前内容长度是否达到预设长度;
若是,则新建一新的日志文件;
在所述新的日志文件中增加第三空白区段;
将所述第三空白区段映射至第三内存地址;
将需要记录的日志数据写入到所述第三内存地址中,从而将所述日志数据写入到所述新的日志文件中。
需要说明的是,本发明实施例所提供的日志记录装置400,其具体实现及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
第三实施例
另外,基于同一发明构思,本发明第三实施例还提供了一种日志记录装置,包括处理器和存储器,所述存储器耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时使所述日志记录装置执行以下操作:
在日志文件中增加第一空白区段;将所述第一空白区段映射至第一内存地址;将需要记录的日志数据写入到所述第一内存地址中,从而将所述日志数据写入到所述日志文件中。
需要说明的是,本发明实施例所提供的日志记录装置中,上述每个步骤的具体实现及产生的技术效果和前述方法实施例相同,为简要描述,本实施例未提及之处可参考前述方法实施例中相应内容。
于本发明实施例中,日志记录装置中安装有操作系统以及第三方应用程序。日志记录装置可以为平板电脑、手机、笔记本电脑、PC(personal computer,个人计算机)、可穿戴设备、车载终端等用户终端设备。
图4示出了一种示例性日志记录装置500的模块框图。如图4所示,日志记录装置500包括存储器502、存储控制器504,一个或多个(图中仅示出一个)处理器506、外设接口508、网络模块510、输入输出模块512、显示模块514等。这些组件通过一条或多条通讯总线/信号线516相互通讯。
存储器502可用于存储软件程序以及模块,如本发明实施例中的日志记录方法以及装置对应的程序指令/模块,处理器506通过运行存储在存储器502内的软件程序以及模块,从而执行各种功能应用以及数据处理,如本发明实施例提供的日志记录方法。
存储器502可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。处理器506以及其他可能的组件对存储器502的访问可在存储控制器504的控制下进行。
外设接口508将各种输入/输出装置耦合至处理器506以及存储器502。在一些实施例中,外设接口508,处理器506以及存储控制器504可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
网络模块510用于接收以及发送网络信号。上述网络信号可包括无线信号或者有线信号。
输入输出模块512用于提供给用户输入数据实现用户与日志记录装置的交互。所述输入输出模块512可以是,但不限于,鼠标、键盘和触控屏幕等。
显示模块514在日志记录装置500与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示模块514可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。
可以理解,图4所示的结构仅为示意,日志记录装置500还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。
第四实施例
本发明第四实施例提供了一种计算机存储介质,本发明第二实施例中的日志记录装置装置集成的功能模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述第一实施例的日志记录方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的日志记录装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种日志记录方法,其特征在于,所述方法包括:
在日志文件中增加第一空白区段;将所述第一空白区段映射至第一内存地址;将需要记录的日志数据写入到所述第一内存地址中,从而将所述日志数据写入到所述日志文件中。
A2.根据A1所述的方法,其特征在于,所述在日志文件中增加第一空白区段,包括:
在所述日志文件中确定可写入日志数据的起始位置;在所述起始位置之后增加所述第一空白区段。
A3.根据A2所述的方法,其特征在于,所述在所述日志文件中确定可写入日志数据的起始位置,包括:
获取当前操作系统的页面大小以及所述日志文件的内容长度;根据所述页面大小以及所述日志文件的内容长度,确定可写入日志数据的起始位置。
A4.根据A3所述的方法,其特征在于,所述根据所述页面大小以及所述日志文件的内容长度,确定可写入日志数据的起始位置,包括:
根据所述页面大小以及所述日志文件的内容长度,确定所述日志文件对应的末尾页面;将所述末尾页面作为可写入日志数据的起始位置。
A5.根据A2所述的方法,其特征在于,所述在所述起始位置之后增加所述第一空白区段,包括:
获取所述起始位置对应的第一长度;获取所述第一空白区段对应的第二长度;将所述日志文件的内容长度调整为所述第一长度加上所述第二长度后形成的总长度。
A6.根据A1所述的方法,其特征在于,所述在日志文件中增加第一空白区段之前,还包括:
基于从metadata文件中读取的所述日志文件的路径,打开所述日志文件;若打开失败,则在所述路径下新建所述日志文件。
A7.根据A1所述的方法,其特征在于,所述将需要记录的日志数据写入到所述第一内存地址中之后,还包括:
若所述第一内存地址被写满,则关闭所述第一内存地址与所述第一空白区段之间的映射;在所述日志文件中继续增加第二空白区段;将所述第二空白区段映射至第二内存地址;将需要记录的日志数据写入到所述第二内存地址中,从而将所述日志数据写入到所述日志文件中。
A8.根据A1所述的方法,其特征在于,所述将需要记录的日志数据写入到所述第一内存地址中之后,还包括:
若所述第一内存地址被写满,则关闭所述第一内存地址与所述第一空白区段之间的映射;判断所述日志文件的当前内容长度是否达到预设长度;若是,则新建一新的日志文件;在所述新的日志文件中增加第三空白区段;将所述第三空白区段映射至第三内存地址;将需要记录的日志数据写入到所述第三内存地址中,从而将所述日志数据写入到所述新的日志文件中。
本发明还公开了B9.一种日志记录装置,其特征在于,所述装置包括:
空白区段新增模块,用于在日志文件中增加第一空白区段;映射模块,用于将所述第一空白区段映射至第一内存地址;日志写入模块,用于将需要记录的日志数据写入到所述第一内存地址中,从而将所述日志数据写入到所述日志文件中。
B10.根据B9所述的装置,其特征在于,所述空白区段新增模块还用于:
在所述日志文件中确定可写入日志数据的起始位置;在所述起始位置之后增加所述第一空白区段。
B11.根据B10所述的装置,其特征在于,所述空白区段新增模块还用于:
获取当前操作系统的页面大小以及所述日志文件的内容长度;根据所述页面大小以及所述日志文件的内容长度,确定可写入日志数据的起始位置。
B12.根据B11所述的装置,其特征在于,所述空白区段新增模块还用于:
根据所述页面大小以及所述日志文件的内容长度,确定所述日志文件对应的末尾页面;将所述末尾页面作为可写入日志数据的起始位置。
B13.根据B10所述的装置,其特征在于,所述空白区段新增模块还用于:
获取所述起始位置对应的第一长度;获取所述第一空白区段对应的第二长度;将所述日志文件的内容长度调整为所述第一长度加上所述第二长度后形成的总长度。
B14.根据B9所述的装置,其特征在于,还包括:读取模块,用于
在所述在日志文件中增加第一空白区段之前,基于从metadata文件中读取的所述日志文件的路径,打开所述日志文件;若打开失败,则在所述路径下新建所述日志文件。
B15.根据B9所述的装置,其特征在于,还包括:第一循环模块,用于
在所述将需要记录的日志数据写入到所述第一内存地址中之后,若所述第一内存地址被写满,则关闭所述第一内存地址与所述第一空白区段之间的映射;在所述日志文件中继续增加第二空白区段;将所述第二空白区段映射至第二内存地址;将需要记录的日志数据写入到所述第二内存地址中,从而将所述日志数据写入到所述日志文件中。
B16.根据B9所述的装置,其特征在于,还包括:第二循环模块,
用于在所述将需要记录的日志数据写入到所述第一内存地址中之后,若所述第一内存地址被写满,则关闭所述第一内存地址与所述第一空白区段之间的映射;判断所述日志文件的当前内容长度是否达到预设长度;若是,则新建一新的日志文件;在所述新的日志文件中增加第三空白区段;将所述第三空白区段映射至第三内存地址;将需要记录的日志数据写入到所述第三内存地址中,从而将所述日志数据写入到所述新的日志文件中。
本发明还公开了C17.一种日志记录装置,其特征在于,包括处理器和存储器,所述存储器耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时使所述日志记录装置执行A1-A8中任一项所述方法的步骤。
本发明还公开了D18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现A1-A8中任一项所述方法的步骤。
Claims (10)
1.一种日志记录方法,其特征在于,所述方法包括:
在日志文件中增加第一空白区段;
将所述第一空白区段映射至第一内存地址;
将需要记录的日志数据写入到所述第一内存地址中,从而将所述日志数据写入到所述日志文件中。
2.根据权利要求1所述的方法,其特征在于,所述在日志文件中增加第一空白区段,包括:
在所述日志文件中确定可写入日志数据的起始位置;
在所述起始位置之后增加所述第一空白区段。
3.根据权利要求2所述的方法,其特征在于,所述在所述日志文件中确定可写入日志数据的起始位置,包括:
获取当前操作系统的页面大小以及所述日志文件的内容长度;
根据所述页面大小以及所述日志文件的内容长度,确定可写入日志数据的起始位置。
4.根据权利要求3所述的方法,其特征在于,所述根据所述页面大小以及所述日志文件的内容长度,确定可写入日志数据的起始位置,包括:
根据所述页面大小以及所述日志文件的内容长度,确定所述日志文件对应的末尾页面;
将所述末尾页面作为可写入日志数据的起始位置。
5.根据权利要求2所述的方法,其特征在于,所述在所述起始位置之后增加所述第一空白区段,包括:
获取所述起始位置对应的第一长度;
获取所述第一空白区段对应的第二长度;
将所述日志文件的内容长度调整为所述第一长度加上所述第二长度后形成的总长度。
6.根据权利要求1所述的方法,其特征在于,所述在日志文件中增加第一空白区段之前,还包括:
基于从metadata文件中读取的所述日志文件的路径,打开所述日志文件;
若打开失败,则在所述路径下新建所述日志文件。
7.根据权利要求1所述的方法,其特征在于,所述将需要记录的日志数据写入到所述第一内存地址中之后,还包括:
若所述第一内存地址被写满,则关闭所述第一内存地址与所述第一空白区段之间的映射;
在所述日志文件中继续增加第二空白区段;
将所述第二空白区段映射至第二内存地址;
将需要记录的日志数据写入到所述第二内存地址中,从而将所述日志数据写入到所述日志文件中。
8.一种日志记录装置,其特征在于,所述装置包括:
空白区段新增模块,用于在日志文件中增加第一空白区段;
映射模块,用于将所述第一空白区段映射至第一内存地址;
日志写入模块,用于将需要记录的日志数据写入到所述第一内存地址中,从而将所述日志数据写入到所述日志文件中。
9.一种日志记录装置,其特征在于,包括处理器和存储器,所述存储器耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时使所述日志记录装置执行权利要求1-7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910133579.1A CN111611217A (zh) | 2019-02-22 | 2019-02-22 | 一种日志记录方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910133579.1A CN111611217A (zh) | 2019-02-22 | 2019-02-22 | 一种日志记录方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111611217A true CN111611217A (zh) | 2020-09-01 |
Family
ID=72199598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910133579.1A Pending CN111611217A (zh) | 2019-02-22 | 2019-02-22 | 一种日志记录方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111611217A (zh) |
-
2019
- 2019-02-22 CN CN201910133579.1A patent/CN111611217A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8010770B2 (en) | Caching device for NAND flash translation layer | |
US11307992B2 (en) | Method and apparatus for performing operations to namespaces of a flash memory device | |
US9710283B2 (en) | System and method for pre-storing small data files into a page-cache and performing reading and writing to the page cache during booting | |
US20100106935A1 (en) | Pretranslating Input/Output Buffers In Environments With Multiple Page Sizes | |
US10268385B2 (en) | Grouped trim bitmap | |
US11288182B2 (en) | Method and computer program product and apparatus for multi-namespace data access | |
US7783854B2 (en) | System and method for expandable non-volatile storage devices | |
US10191838B2 (en) | Method and device for checking influence of deleting cache file, and mobile terminal | |
CN109804359A (zh) | 用于将数据回写到存储设备的系统和方法 | |
US20200089619A1 (en) | Data storage device and method of deleting namespace thereof | |
TW201523253A (zh) | 資料儲存裝置以及其資料存取方法 | |
CN110825325A (zh) | 基于映射表动态加载的ssd性能提升方法、装置、计算机设备及存储介质 | |
US10712943B2 (en) | Database memory monitoring and defragmentation of database indexes | |
US20060136690A1 (en) | Storage device having independent storage areas and password protection method thereof | |
US11210226B2 (en) | Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof | |
CN108710474A (zh) | 一种数据存储方法、装置及计算机存储介质 | |
US20200218667A1 (en) | Operating method for data storage device | |
CN108701080A (zh) | 使用参考值确保存储设备动作有效 | |
US8880471B2 (en) | Virtual storage device | |
CN112000591A (zh) | 可指定逻辑区块地址的扫描ssd方法、装置、计算机设备及存储介质 | |
CN111611217A (zh) | 一种日志记录方法及装置 | |
US20140181379A1 (en) | File Reading Method, Storage Device And Electronic Device | |
US9804968B2 (en) | Storage system and data writing method | |
CN109558073A (zh) | 一种基于教育系统的磁盘延长寿命的方法及电子设备 | |
US11698871B2 (en) | Method for PRP/SGL handling for out-of-order NVME controllers |
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 |