一种嵌入式系统日志记录的方法与装置与流程

文档序号:13332052阅读:449来源:国知局
一种嵌入式系统日志记录的方法与装置与流程

本发明涉及嵌入式系统技术领域,特别是涉及一种嵌入式系统日志记录的方法与装置。



背景技术:

在当今社会,嵌入式系统越来越广泛应用在各个行业,大到航天航空设备,小到微波炉智能手表,都有嵌入式程序运行在里面。因为嵌入式系统运行环境的特殊性,造成问题定位和调试的困难。这个时候,日志(log)的记录对问题的定位和调试就显得尤为重要了。但是受限于嵌入式系统硬件资源的限制,用于存储的随机存取存储器(randomaccessmemory,ram)或者闪存(flasheeprommemory,flash)十分宝贵,这些内存不仅需要用于嵌入式系统的运行内存,还要用于存放一些重要配置文件,所以可用于记录日志的内存就很少了。

可见,如何提高日志内存的利用率,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种嵌入式系统日志记录的方法与装置,可以提高日志内存的利用率。

为解决上述技术问题,本发明实施例提供一种嵌入式系统日志记录的方法,包括:

s10:接收用户设置的文件总数值和文件大小的上限值;

s11:当需要记录日志信息时,判断是否存在目标文件;若是,则执行s12;若否,则执行s16;

s12:判断所述目标文件的大小是否超过所述上限值;若是,则执行s13;若否,则执行s17;

s13:统计创建的所有用于记录日志信息的日志文件的个数,判断所述个数是否大于等于所述总数值;若是,则执行s14;若否,则执行s15;

s14:删除不符合预设条件的一个日志文件,依据预先设置的命名规则,将剩余的各个所述日志文件以及所述目标文件重命名,并执行s16;

s15:依据预先设置的命名规则,将各个所述日志文件以及所述目标文件重命名,并执行s16;

s16:创建目标文件;

s17:向所述目标文件写入所述日志信息,并返回所述s12。

可选的,在所述s14中包括:

依据日志文件中记录日志信息的时间长短,对所述日志文件进行升序排列,将升序排列后的最后一个日志文件删除;

相应的,将数字作为文件名的后缀时,按照文件名后缀增1的方式,对于剩余的各个所述日志文件以及所述目标文件进行重命名。

可选的,还包括:

当接收到用户输入的提取指令后,按照文件名后缀降序的方式,将所有所述日志文件以及所述目标文件记录的日志信息合并到一个文件中,从而组成完整的日志信息;并将所述完整的日志信息上传至指定的存储位置。

本发明实施例还提供了一种嵌入式系统日志记录的装置,包括接收单元、第一判断单元、第二判断单元、统计单元、第三判断单元、删除单元、重命名单元、创建单元和写入单元,

所述接收单元,用于接收用户设置的文件总数值和文件大小的上限值;

当需要记录日志信息时,则触发所述第一判断单元,所述第一判断单元,用于判断是否存在目标文件;若是,则触发所述第二判断单元;若否,则触发所述创建单元;

所述第二判断单元,用于判断所述目标文件的大小是否超过所述上限值;若是,则触发所述统计单元;若否,则触发所述写入单元;

所述统计单元,用于统计创建的所有用于记录日志信息的日志文件的个数,并触发所述第三判断单元,所述第三判断单元,用于判断所述个数是否大于等于所述总数值;若是,则触发所述删除单元;若否,则触发所述重命名单元;

所述删除单元,用于删除不符合预设条件的一个日志文件,依据预先设置的命名规则,将剩余的各个所述日志文件以及所述目标文件重命名,并触发所述创建单元;

重命名单元,用于依据预先设置的命名规则,将各个所述日志文件以及所述目标文件重命名,并触发所述创建单元;

所述创建单元,用于创建目标文件;

所述写入单元,用于向所述目标文件写入所述日志信息,并触发所述第二判断单元。

可选的,所述删除单元具体用于依据日志文件中记录日志信息的时间长短,对所述日志文件进行升序排列,将升序排列后的最后一个日志文件删除;

相应的,将数字作为文件名的后缀时,所述删除单元具体用于按照文件名后缀增1的方式,对于剩余的各个所述日志文件以及所述目标文件进行重命名。

可选的,还包括合并单元,所述合并单元,用于当接收到用户输入的提取指令后,按照文件名后缀降序的方式,将所有所述日志文件以及所述目标文件记录的日志信息合并到一个文件中,从而组成完整的日志信息;并将所述完整的日志信息上传至指定的存储位置。

由上述技术方案可以看出,接收用户设置的文件总数值和文件大小的上限值;将产生的日志信息存储到目标文件中,若不存在该目标文件,则需要先建立该目标文件;其中,该目标文件有其对应的文件名,当目标文件的内存大小超过上限值时,则将该目标文件重命名,然后重新建立一个以该文件名命名的目标文件,新建的目标文件可以用于记录新产生的日志信息。直到建立的所有日志文件(包括建立的目标文件在内)的个数超过总数值时,则删除不符合预设条件的一个日志文件,依据预先设置的命名规则,将剩余的各个所述日志文件以及所述目标文件重命名,并重新创建目标文件。通过滚动的方式记录日志,即当日志记录达到为日志分配的内存上限值时,新记录的日志会覆盖最老的日志,从而达到提高内存利用率,延长日志记录时间的目的。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种嵌入式系统日志记录的方法的流程图;

图2为本发明实施例提供的一种嵌入式系统日志记录的装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种嵌入式系统日志记录的方法。图1为本发明实施例提供的一种嵌入式系统日志记录的方法的流程图,该方法包括:

s10:接收用户设置的文件总数值和文件大小的上限值;

在本发明实施例中,可以根据分配给日志(log)的内存大小来决定需要将内存划分成多少个文件来记录日志。

首先需要确认分配给log的内存的大小(假设为s),根据分配内存的大小来决定日志滚动记录的策略,确认分配给log的内存大小之后,将内存n等分,n即为设定的总数值。n的具体取值值可以根据分配给log的内存综合考虑。

在本发明实施例中,可以预先设置好日志信息的存储位置,例如,可以预先设置好用于存储日志信息的文件名,当有新的日志信息生成时,则可以将日志信息记录到该文件名对应的文件中。为后续介绍方便,可以将用于存储当前日志信息的日志文件称作目标文件。

上限值可以是目标文件内存大小的最大值。以log的内存的大小为s,将内存n等分为例,依照均分原则,相应的,每个用于存储日志信息的文件大小为s/n。为避免出现目标文件剩余的存储空间无法完全存储待存储的日志信息,因此,在设置上限值时,可以将该上限值设置的稍小于s/n。

s11:当需要记录日志信息时,判断是否存在目标文件。

当系统需要向log中记录日志信息的时候,如果是第一次记录日志信息,则执行s16创建目标文件(log文件),由于是第一次创建目标文件,所以不存在记录日志信息的文件个数超限即超过总数值,或者是当前的目标文件大小超限即超过上限值的问题,因此在创建目标文件后,便可以执行s17向该目标文件中写入日志信息;如果不是第一次记录日志信息,则目标文件已经存在,因此,在向目标文件写入日志信息之前,需要先对当前的目标文件大小是否超限的问题进行判断即执行s12。

s12:判断所述目标文件的大小是否超过所述上限值。

当目标文件的内存大小大于该上限值时,则说明该目标文件可使用的内存空间已经很小了,不适合再存储新的日志信息,此时可以执行s13;当目标文件的内存大小未超过该上限值时,则说明该目标文件仍可以继续存储新的日志信息即执行s17。

s13:统计创建的所有用于记录日志信息的日志文件的个数,判断所述个数是否大于等于所述总数值。

当目标文件的大小超过上限值时,为了便于后续继续存储新产生的日志信息,在本发明实施例中,可以将超限的目标文件重命名,然后重新建立一个以原文件名命名的目标文件,用于存储日志信息。

例如,创建的目标文件即log文件,其文件名为runtime.log,当该目标文件的大小达到上限值时,将该log文件重命名为*.1,即runtime.log.1,然后使用原来的名字runtime.log重新创建log文件,向新创建的目标文件里继续写入日志信息。

但是由于分配给记录日志信息的内存大小有限,相应的,建立的日志文件的个数有对应的一个总数值,当创建的所有日志文件的个数达到总数值后,由于内存大小有限,则无法新创建目标文件。因此,当目标文件的大小超过上限值时,则需要先判断创建的所有日志文件的个数是否超过设定的总数值。

当日志文件的个数大于等于设定的总数值时,说明创建的日志文件已经达到了上限值,无法再新创建目标文件,此时可以执行s14;当日志文件的个数小于设定的总数值时,说明还可以继续新创建目标文件,则执行s15。

s14:删除不符合预设条件的一个日志文件,依据预先设置的命名规则,将剩余的各个所述日志文件以及所述目标文件重命名,并执行s16。

在本发明实施例中,可以将参考价值最小的一个日志文件删除。具体的,可以依据日志文件中记录日志信息的时间长短,对所述日志文件进行升序排列,将升序排列后的最后一个日志文件删除;也即将时间最久的一个日志文件删除。

在本发明实施例中,可以将数字作为文件名的后缀,具体的,可以按照文件名后缀增1的方式,对于剩余的各个所述日志文件以及所述目标文件进行重命名。

以总数值为n为例,当创建的log文件(runtime.log)大小达到上限值,并且重名的日志文件有*.n-1(runtime.log.n-1)的时候,将*.n-1(runtime.log.n-1)日志文件删除,然后将之前重命名的*.n-2(runtime.log.n-2)文件重命名为*.n-1(runtime.log.n-1),依次类推,将之前重命名的*.1(runtime.log.1)文件重命名为*.2(runtime.log.2),将之前新创建的log文件(runtime.log)重命名为*.1(runtime.log.1),然后执行s16即新建log文件(runtime.log)继续往里面写入日志信息。

s15:依据预先设置的命名规则,将各个所述日志文件以及所述目标文件重命名,并执行s16。

s15中文件重命名的方式与s14中文件重命名的方式类似,在此不再赘述。

s16:创建目标文件。

s17:向所述目标文件写入所述日志信息,并返回所述s12。

当日志信息写入目标文件后,需要对目标文件的大小是否超限进行判断即返回s12。通过循环执行上述操作步骤,可以将日志信息以滚动的方式记录。

由上述技术方案可以看出,接收用户设置的文件总数值和文件大小的上限值;将产生的日志信息存储到目标文件中,若不存在该目标文件,则需要先建立该目标文件;其中,该目标文件有其对应的文件名,当目标文件的内存大小超过上限值时,则将该目标文件重命名,然后重新建立一个以该文件名命名的目标文件,新建的目标文件可以用于记录新产生的日志信息。直到建立的所有日志文件(包括建立的目标文件在内)的个数超过总数值时,则删除不符合预设条件的一个日志文件,依据预先设置的命名规则,将剩余的各个所述日志文件以及所述目标文件重命名,并重新创建目标文件。通过滚动的方式记录日志,即当日志记录达到为日志分配的内存上限值时,新记录的日志会覆盖最老的日志,从而达到提高内存利用率,延长日志记录时间的目的。

结合上述将数字作为文件名的后缀为例,当系统接收到用户输入的提取指令后,则可以按照文件名后缀降序的方式,将所有所述日志文件以及所述目标文件记录的日志信息合并到一个文件中,从而组成完整的日志信息;并将所述完整的日志信息上传至指定的存储位置。

以runtime.log作为目标文件的文件名为例,当需要提取log的时候,只需要按照重命名文件后缀降序的顺序(runtime.log.n-1<<runtime.log.n-2…<<runtime.log)将log文件合并到一个文件中,然后上传到用户指定的存储位置即可。

图2为本发明实施例提供的一种嵌入式系统日志记录的装置的结构示意图,包括接收单元21、第一判断单元22、第二判断单元23、统计单元24、第三判断单元25、删除单元26、重命名单元27、创建单元28和写入单元29,

所述接收单元21,用于接收用户设置的文件总数值和文件大小的上限值;

当需要记录日志信息时,则触发所述第一判断单元22,所述第一判断单元22,用于判断是否存在目标文件;若是,则触发所述第二判断单元23;若否,则触发所述创建单元28;

所述第二判断单元23,用于判断所述目标文件的大小是否超过所述上限值;若是,则触发所述统计单元24;若否,则触发所述写入单元29;

所述统计单元24,用于统计创建的所有用于记录日志信息的日志文件的个数,并触发所述第三判断单元25,所述第三判断单元25,用于判断所述个数是否大于等于所述总数值;若是,则触发所述删除单元26;若否,则触发所述重命名单元27;

所述删除单元26,用于删除不符合预设条件的一个日志文件,依据预先设置的命名规则,将剩余的各个所述日志文件以及所述目标文件重命名,并触发所述创建单元28;

重命名单元27,用于依据预先设置的命名规则,将各个所述日志文件以及所述目标文件重命名,并触发所述创建单元28;

所述创建单元28,用于创建目标文件;

所述写入单元29,用于向所述目标文件写入所述日志信息,并触发所述第二判断单元23。

可选的,所述删除单元具体用于依据日志文件中记录日志信息的时间长短,对所述日志文件进行升序排列,将升序排列后的最后一个日志文件删除;

相应的,将数字作为文件名的后缀时,所述删除单元具体用于按照文件名后缀增1的方式,对于剩余的各个所述日志文件以及所述目标文件进行重命名。

可选的,还包括合并单元,所述合并单元,用于当接收到用户输入的提取指令后,按照文件名后缀降序的方式,将所有所述日志文件以及所述目标文件记录的日志信息合并到一个文件中,从而组成完整的日志信息;并将所述完整的日志信息上传至指定的存储位置。

图2所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,接收用户设置的文件总数值和文件大小的上限值;将产生的日志信息存储到目标文件中,若不存在该目标文件,则需要先建立该目标文件;其中,该目标文件有其对应的文件名,当目标文件的内存大小超过上限值时,则将该目标文件重命名,然后重新建立一个以该文件名命名的目标文件,新建的目标文件可以用于记录新产生的日志信息。直到建立的所有日志文件(包括建立的目标文件在内)的个数超过总数值时,则删除不符合预设条件的一个日志文件,依据预先设置的命名规则,将剩余的各个所述日志文件以及所述目标文件重命名,并重新创建目标文件。通过滚动的方式记录日志,即当日志记录达到为日志分配的内存上限值时,新记录的日志会覆盖最老的日志,从而达到提高内存利用率,延长日志记录时间的目的。

以上对本发明实施例所提供的一种嵌入式系统日志记录的方法与装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1