一种应用于嵌入式终端的日志处理方法以及设备与流程

文档序号:23759425发布日期:2021-01-29 18:25阅读:73来源:国知局
一种应用于嵌入式终端的日志处理方法以及设备与流程

[0001]
本发明涉及日志处理技术领域,尤其涉及一种应用于嵌入式终端的日志处理方法以及设备。


背景技术:

[0002]
在嵌入式终端系统,系统会产生大量运行日志、操作日志、故障日志,需要大量有效获取这些日志的场景。
[0003]
随着数字化智能化信息化的发展,在嵌入式终端系统运行中产生和保存大量的日志数据成为当前的主流选择。虽然日志数据不影响系统的正常运行,但没有日志的项目是不完整的。在产品开发阶段,日志数据可以有效记录程序运行状态,对项目的调试起到跟踪记录作用;在产品运行阶段,故障日志可以定位系统错误,帮助运维人员分析设备状态,提出解决方案;在客户使用阶段,用户数据日志可以分析用户使用行为,对下一步产品发展战略方向起到一定指导作用。
[0004]
目前产品设计中,可用到的日志存储方案主要存在的问题有:存储空间利用率不高,导致存储日志内容比不上预期目的;检索有效数据需要花费大量时间,不满足用户使用实时性要求,严重影响产品的使用效果。


技术实现要素:

[0005]
本发明提供一种应用于嵌入式终端的日志处理方法以及设备,其可以提高存储空间的利用率。
[0006]
为了解决上述技术问题,本发明一种应用于嵌入式终端的日志处理方法,所述日志处理方法包括:
[0007]
采集周期性产生的日志数据;
[0008]
获取存储器的最新记录地址,并基于所述最新记录地址确定存储器的操作位置;
[0009]
将所述日志数据存储至所述存储器的操作位置所对应的地址;
[0010]
根据所述操作位置的地址及本帧日志数据的长度,得到新的地址作为最新记录地址。
[0011]
作为上述技术方案的优选,所述步骤将所述日志数据存储至所述存储器的操作位置所对应的地址包括:每一帧数据存储首地址紧接着上一帧数据的结尾。
[0012]
作为上述技术方案的优选,所述步骤将所述日志数据存储至所述存储器的操作位置所对应的地址还包括:判断扇区剩余的存储空间能否容纳所述日志数据,如果判断所述扇区剩余的存储空间能够容纳所述日志数据,则将所述日志数据存储在所述扇区剩余的存储空间中,如果判断所述扇区剩余的存储空间不能够容纳所述日志数据,则将所述日志数据存储在下一扇区的初始位置。
[0013]
作为上述技术方案的优选,所述步骤将所述日志数据存储至所述存储器的操作位置所对应的地址还包括:判断所述存储器是否写满,如果判断所述存储器已经写满则将所
述日志数据存储在存储器首扇区的初始位置并覆盖原有数据,如果判断所述存储器没有写满,则根据存储的操作顺序按照日志数据的时间戳升序对日志数据进行存储。
[0014]
作为上述技术方案的优选,所述日志处理方法还包括:记录所述存储器的首扇区的地址和中间位置扇区的地址以及存储于所述首扇区中位于初始位置的日志数据的第一时间戳和所述中间位置扇区中位于初始位置的日志数据的第二时间戳。
[0015]
作为上述技术方案的优选,所述日志处理方法还包括:按日志数据的时间戳检索日志数据。
[0016]
作为上述技术方案的优选,所述步骤按时间戳检索日志数据包括:依据所述首扇区的地址和所述中间位置扇区的地址以及所述第一时间戳和所述第二时间戳对需要检索的日志数据进行粗定位。
[0017]
作为上述技术方案的优选,依据所述首扇区的地址和所述中间位置扇区的地址以及所述第一时间戳和所述第二时间戳对需要检索的日志数据进行粗定位包括:获取需要检索的日志数据的检索时间戳,判断所述第一时间戳是否小于等于所述第二时间戳,当判断结果为是则判断检索时间戳是否小于等于第一时间戳,当判断检索时间戳是否小于等于第一时间戳的结果为是则检索存储器的后半部分扇区,当判断检索时间戳是否小于等于第一时间戳的结果为否则判断检索时间戳是否小于等于第二时间戳,当判断检索时间戳是否小于等于第二时间戳的结果为是则检索存储器的前半部分扇区,当判断检索时间戳是否小于等于第二时间戳的结果为否则检索存储器的后半部分扇区。
[0018]
作为上述技术方案的优选,依据所述首扇区的地址和所述中间位置扇区的地址以及所述第一时间戳和所述第二时间戳对需要检索的日志数据进行粗定位包括:当判断所述第一时间戳是否小于等于所述第二时间戳的结果为否则判断所述检索时间戳是否大于等于第一时间戳,当判断所述检索时间戳是否大于等于第一时间戳的结果为是则检索存储器的前半部分扇区,当判断所述检索时间戳是否大于等于第一时间戳的结果为否则判断所述检索时间戳是否小于等于第二时间戳,当判断所述检索时间戳是否小于等于第二时间戳的结果为是则检索存储器的前半部分扇区,当判断所述检索时间戳是否小于等于第二时间戳的结果为否则检索存储器的后半部分扇区。
[0019]
本发明另一方面还提供了一种日志处理设备,所述日志处理设备包括:
[0020]
控制器,用于实现各程序;
[0021]
程序存储器,用于存储至少一个程序;
[0022]
所述控制器执行所述至少一个程序时,所述日志处理设备执行以上所述的日志处理方法。
[0023]
本发明提供一种应用于嵌入式终端的日志处理方法,本发明通过获取存储器的最新记录地址,并基于所述最新记录地址确定存储器的操作位置,将日志数据存储至存储器的操作位置所对应的地址,并将操作位置所对应的地址更新为最新记录地址,其可以对最新记录地址的更新以使得能够对日志数据进行存储排序,可以合理安排存储位置,提高存储空间的利用率。
[0024]
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
[0025]
图1为本发明实施例日志处理方法的流程示意图;
[0026]
图2为本发明实施例中日志检索粗定位的流程示意图;
[0027]
图3为本发明实施例中按时间戳检索的流程示意图;
[0028]
图4为本发明实施例中日志处理设备的示意图。
具体实施方式
[0029]
为使本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030]
参见图1,本发明实施例提供了一种应用于嵌入式终端的日志处理方法,日志处理方法包括:
[0031]
步骤100:采集周期性产生的日志数据;
[0032]
步骤200:获取存储器的最新记录地址,并基于所述最新记录地址确定存储器的操作位置;
[0033]
步骤300:将所述日志数据存储至所述存储器的操作位置所对应的地址;
[0034]
步骤400:根据所述操作位置的地址及本帧日志数据的长度,得到新的地址作为最新记录地址。
[0035]
本实施例提供一种应用于嵌入式终端的日志处理方法,通过获取存储器的最新记录地址,并基于所述最新记录地址确定存储器的操作位置,将日志数据存储至存储器的操作位置所对应的地址,并将操作位置所对应的地址更新为最新记录地址,其可以对最新记录地址的更新以使得能够对日志数据进行存储排序,可以合理安排存储位置,提高存储空间的利用率。
[0036]
举例说明:如按天对产生的日志数据进行采集,在日志数据采集完之后则获取存储器最新记录地址,即判断当前的日志数据所要存储的扇区以及其位于扇区中的位置地址,如当前的储存位置位于中间扇区的中间位置,确定将该中间扇区的中间位置为操作位置,将当天的日志数据存储在该操作位置,并且更新最新记录地址,即将最新记录地址更新为该操作位置的后面的位置。
[0037]
本实施例中的存储器可以为flash存储器,并且本实施例之中日志数据在存储器中存储内容结构包括:属性包头、数据区;属性包头包括日志产生时间戳、本帧日志起始存储地址、本帧数据长度。数据区指用户采集数据。
[0038]
在本实施例的进一步可实施方式中,所述步骤将所述日志数据存储至所述存储器的操作位置所对应的地址包括:每一帧数据存储首地址紧接着上一帧数据的结尾。
[0039]
本实施例中每个扇区中,每帧的数据都有各自的存储长度,每一帧数据存储首地址紧接着上一帧数据的结尾,不存在空间的浪费,进一步可以提高存储空间的利用率。
[0040]
在本实施例的进一步可实施方式中,步骤将日志数据存储至存储器的操作位置所对应的地址还包括:判断扇区剩余的存储空间能否容纳日志数据,如果判断扇区剩余的存储空间能够容纳日志数据,则将日志数据存储在扇区剩余的存储空间中,如果判断扇区剩
余的存储空间不能够容纳日志数据,则将日志数据存储在下一扇区的初始位置。
[0041]
本实施例中的存储过程中保证了日志数据禁止跨扇区,一帧日志数据在存储时禁止跨扇区,这样保证了flash存储器被二次覆盖时,每帧数据的正确性。并且每个扇区以0xffffffff作为本扇区存储结束标志,又保证了检索有效性。
[0042]
在本实施例的进一步可实施方式中,步骤将日志数据存储至存储器的操作位置所对应的地址还包括:判断存储器是否写满,如果判断存储器已经写满则将日志数据存储在存储器首扇区的初始位置并覆盖原有数据,如果判断存储器没有写满,则根据存储的操作顺序按照日志数据的时间戳升序对日志数据进行存储。
[0043]
另外,需要说明的是当每个扇区首地址写入数据时,根据存储器操作规则,需要擦除该扇区的整扇区内容。
[0044]
本实施例中在存储的过程中先对存储器进行状态判断,判断存储器是不是已经写满,并且根据存储的操作顺序按照日志数据的时间戳升序对日志数据进行存储其保证存储方向唯一性,对检索正确性和效率起到了很大的促进作用。
[0045]
在本实施例的进一步可实施方式中,日志处理方法还包括:记录存储器的首扇区的地址和中间位置扇区的地址以及存储于首扇区中位于初始位置的日志数据的第一时间戳和中间位置扇区中位于初始位置的日志数据的第二时间戳。
[0046]
本实施例中记录首扇区的地址和中间位置扇区的地址以及第一时间戳和第二时间戳,其可以方便后续操作,尤其可以用于方便对日志数据进行后续检索。
[0047]
在本实施例的进一步可实施方式中,日志处理方法还包括:按日志数据的时间戳检索日志数据。
[0048]
本实施例中采用按日志数据的时间戳检索日志数据可以确保检索的效率和准确性,具体而言,本实施例中操作者如果需要查看某一天的的日志数据,则按时间戳检索调取与其对应的日志数据。
[0049]
在本实施例的进一步可实施方式中,按时间戳检索日志数据的步骤包括:依据首扇区的地址和中间位置扇区的地址以及第一时间戳和第二时间戳对需要检索的日志数据进行粗定位。
[0050]
本实施例中在检索过程中先对需要检索的日志数据进行粗定位,然后开始逐条检索,进行粗定位之后可以减少需要检索的数据量,提高检索的效率,缩短检索过程。
[0051]
在本实施例的进一步可实施方式中,依据首扇区的地址和中间位置扇区的地址以及第一时间戳和第二时间戳对需要检索的日志数据进行粗定位包括:获取需要检索的日志数据的检索时间戳,判断第一时间戳是否小于等于第二时间戳,当判断结果为是则判断检索时间戳是否小于等于第一时间戳,当判断检索时间戳是否小于等于第一时间戳的结果为是则检索存储器的后半部分扇区,当判断检索时间戳是否小于等于第一时间戳的结果为否则判断检索时间戳是否小于等于第二时间戳,当判断检索时间戳是否小于等于第二时间戳的结果为是则检索存储器的前半部分扇区,当判断检索时间戳是否小于等于第二时间戳的结果为否则检索存储器的后半部分扇区。
[0052]
在本实施例的进一步可实施方式中,依据首扇区的地址和中间位置扇区的地址以及第一时间戳和第二时间戳对需要检索的日志数据进行粗定位包括:当判断第一时间戳是否小于等于第二时间戳的结果为否则判断检索时间戳是否大于等于第一时间戳,当判断检
索时间戳是否大于等于第一时间戳的结果为是则检索存储器的前半部分扇区,当判断检索时间戳是否大于等于第一时间戳的结果为否则判断检索时间戳是否小于等于第二时间戳,当判断检索时间戳是否小于等于第二时间戳的结果为是则检索存储器的前半部分扇区,当判断检索时间戳是否小于等于第二时间戳的结果为否则检索存储器的后半部分扇区。
[0053]
本实施例中,粗定位日志数据位于前半个扇区还是后半个扇区,在检索的时候可以将检索过程缩短一半。
[0054]
具体参见图2所示,本实施例先按照扇区粗定位的过程如图2所示:读取中间位置扇区地址(mid_addr位置)的时间戳tm(第二时间戳),读取首扇区地址(sta_addr位置)的时间戳t0(第一时间戳),tr(检索时间戳)指用户指定搜索的历史数据时间戳。
[0055]
具体而言,本实施例中的中间位置扇区地址(mid_addr位置)的时间戳tm(第二时间戳)为整个存储器当中位于中间位置的扇区的初始位置数据包的时间戳,首扇区地址(sta_addr位置)的时间戳t0(第一时间戳)为整个存储器当中处于首个位置的扇区的初始位置数据包的时间戳
[0056]
当t0≤tm时存在两种情况,第一种情况为存储器没有写满的状态,此时存储器所有的日志数据均按时间戳升序排列,第二种情况为存储器已经写满的状态,并且至少前半部分已经被新日志数据覆盖,当t0≤tm并且tr≤t0时,只需要对后半部分扇区检索即可,当t0≤tm,并且tr>t0,tr≤tm时则对前半部分的扇区进行检索,当t0≤tm,并且tr>t0,tr>tm时则对后半部分扇区检索,因此通过判断时间戳的对比确定所要检索的历史数据位于前半部分扇区还是后半部分扇区,因此相较于顺序检索可以大大缩短检索时间。
[0057]
当t0>tm时则存储器已经写满,并且新的写入的日志数据并未完全覆盖前半部分扇区,因此当t0>tm,并且tr≥t0则检索前半部分扇区,当t0>tm,并且tr<t0,tr≤tm时,则检索前半部分扇区,当t0>tm,并且tr<t0,tr>tm时,则检索后半部分扇区。
[0058]
本实施例的粗定位的检索过程简单,需要运算量也较少,而且还可以提高检索效率。
[0059]
在对需要检索的日志数据进行粗定位之后则开始进行扇区定位的检索过程,其用于确定所需要检索的数据位于具体的扇区,其从前半部分扇区或后半部分扇区的第一个扇区起始位置开始进行检索,即通过提取每一扇区初始位置数据包的时间戳来判断所要检索的内容位于哪一个扇区当中,其具体检索过程具体如图3所示,其中cur_addr为当前的扇区地址,tc为当前扇区地址中初始位置的数据包的时间戳,next_addr为cur_addr的下一个扇区地址,tn为下一个扇区地址的初始位置的数据包的时间戳,tr(检索时间戳)指用户指定搜索的历史数据时间戳,当tc≤tn,则证明cur_addr和next_addr之间为时间戳升序排列,并且tr≥tc,tr≤tn时即可确定需要检索的日志数据位于当前的扇区地址当中,对于其他并不是tr≥tc,tr≤tn的情况则将next_addr作为cur_addr继续进行上述的检索直至确定需要检索的日志内容所存储的具体扇区。
[0060]
举例说明,在确定所要检索的日志数据位于存储器前半部分扇区的时候,则从存储器前半部分扇区的第一个扇区开始进行检索,将第一个扇区作为cur_addr提取第一个扇区初始位置的数据包时间戳为2020年5月1日,将第二个扇区作为next_addr提取第二个扇区初始位置数据包时间戳为2020年6月1日,而用户需要检索2020年5月18日的日志数据,由于2020年5月1日<2020年6月1日,并且2020年5月18>2020年5月1日,2020年5月18<2020年6
月1日,可以确定2020年5月18的日志数据存储在存储器前半部分扇区的第一个扇区当中,如果需要检索2020年7月1日的日志数据则将第二个扇区作为cur_addr,将第三个扇区作为next_addr继续上述的检索比较过程直至确定2020年7月1日的日志数据所处的扇区。
[0061]
当tn<tc,则证明cur_addr和next_addr之间初始位置数据包的时间戳降序,即cur_addr至少有部分空间被新写入的数据所覆盖,由于该扇区定位过程为从前半部分扇区或后半部分扇区的第一个扇区起始位置开始,因此tr≥tc时则可确定需要检索的日志内容位于当前的扇区地址当中,对于其他并不是tr≥tc的情况则将next_addr作为cur_addr继续进行上述的检索直至确定需要检索的日志内容所存储的具体扇区。
[0062]
举例说明:通过粗定位确定所要检索的日志数据位于存储器后半部分的扇区当中,在进行扇区定位检索的时候,从后半部分的扇区的第一个扇区开始检索,提取第一个扇区的初始位置的时间戳为2020年7月15日,此时判断所要检索的日志数据并不位于第一个扇区当中,则将第二个扇区作为cur_addr,提取第二个扇区作初始位置的数据包时间戳为2020年8月20日,将第三个扇区作为next_addr提取第三个扇区初始位置的数据包的时间戳为2020年3月1日,由于2020年3月1日<2020年8月20日因此第二个扇区当中至少有部分空间已经被新写入的数据所覆盖,需要检索2020年8月25日的日志数据则可以确定其只有可能位于第二个扇区当中。
[0063]
确定需要检索的日志数据所在的扇区之后,在本扇区当中,根据本帧数据长度,依次将每帧日志数据的时间戳与检索时间戳进行比较,如果匹配成功,则检索到所需要的日志数据。由于日志数据禁止跨扇区存储,因此在每一扇区的结尾均以0xffffffff结束,在本扇区之中当检索到0xffffffff时,认为检索失败。
[0064]
另外,本实施例中,当不按自然时间规律的数据包污染历史数据包时,为它开辟新的存储区域,不污染正常序列的日志集中的内容,对按时间检索的日志不造成干扰,保证日志数据的正确性。
[0065]
参见图4,本实施例另一方面提供一种日志处理设备,日志处理设备10包括:
[0066]
控制器20,用于实现各程序;
[0067]
程序存储器30,用于存储至少一个程序;
[0068]
控制器20执行所述至少一个程序时,日志处理设备10执行日志处理方法。
[0069]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0070]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0071]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵
盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1