一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种日志持久化方法及系统与流程

2022-12-02 23:27:12 来源:中国专利 TAG:


1.本技术涉及数据处理领域,尤其涉及一种日志持久化方法及系统。


背景技术:

2.随着汽车电子技术跟新迭代,越来越多的汽车仪表由传统的单片机系统过渡到现代操作系统。现在的汽车软件代码量快速增大,系统功能也越来越复杂,导致嵌入式软件的问题也越来越多;然而开发无法避免设计和测试阶段未能测出的bug,在软件发布后仍有可能存在问题,定位软件问题的来源是解决软件问题的关键步骤。因此记录软件故障的日志,在现在带操作系统的汽车软件中是不可缺少的一部分。由于汽车仪表上的功能安全需求,仪表操作系统更加青睐于具有功能安全的qnx操作系统。在qnx操作系统中,有一个日志系统组件slogger2,它会将整个qnx系统使用slogger2记录的日志都存储在共享内存中,系统掉电或者重启之后存储在共享内存中的日志数据就会丢失。


技术实现要素:

3.鉴于以上现有技术存在的问题,本技术提出一种日志持久化方法及系统,主要解决现有日志数据存储过程中日志数据容易丢失的问题。
4.为了实现上述目的及其他目的,本技术采用的技术方案如下。
5.本技术提供一种日志持久化方法,包括:
6.通过差分方式获取日志数据,将所述日志数据存储在预设缓冲区,并对存储的日志数据进行计数,得到计数结果;
7.在所述计数结果达到预设计数阈值后,读取所述预设缓冲区中的所有日志数据并存储到预设存储空间进行持久化。
8.在本技术一实施例中,通过差分方式获取日志数据,包括:
9.启动预设的日志管理服务,通过所述日志管理服务获取各系统端应用写入日志数据;
10.逐条读取所述日志管理服务中的日志数据,与前一个读取时间节点获取的日志数据进行比较,得到差异日志数据作为差分方式获取的日志数据。
11.在本技术一实施例中,读取所述预设缓冲区中的所有日志数据之后,包括:
12.对读取的所述预设缓冲区中的日志数据进行压缩,并将得到的压缩文件与压缩时间节点关联后存入所述预设存储空间进行持久化。
13.在本技术一实施例中,将得到的压缩文件与压缩时间节点关联,包括:
14.在进行日志数据压缩时,读取系统时间;
15.通过系统时间对压缩文件进行命名以完成压缩文件与时间节点的关联。
16.在本技术一实施例中,将得到的压缩文件与压缩时间节点关联后存入所述预设存储空间进行持久化,包括:
17.对存入所述预设存储空间中的压缩文件进行计数,得到压缩文件数量;
18.若所述压缩文件数量达到预设数量阈值,则基于各所述压缩文件进行再次压缩后进行存储。
19.本技术还提供一种日志持久化系统,包括:
20.日志缓存模块,用于通过差分方式获取日志数据,将所述日志数据存储在预设缓冲区,并对存储的日志数据进行计数,得到计数结果;
21.持久化模块,用于在所述计数结果达到预设计数阈值后,读取所述预设缓冲区中的所有日志数据并存储到预设存储空间进行持久化。
22.如上所述,本技术一种日志持久化方法及系统,具有以下有益效果。
23.本技术通过差分方式获取日志数据,将所述日志数据存储在预设缓冲区,并对存储的日志数据进行计数,得到计数结果;在所述计数结果达到预设计数阈值后,读取所述预设缓冲区中的所有日志数据并存储到预设存储空间进行持久化;本技术通过差分方式读取日志数据,可减少日志数据写入缓冲区的数据量,同时基于缓冲区进行日志写入及持久化,在持久化的同时不影响日志数据的写入,避免因掉电导致数据丢失。
附图说明
24.图1为本技术一实施例中日志持久化方法的流程示意图。
25.图2本技术一实施例中通过差分读取日志数据的流程示意图。
26.图3为本技术一实施例中通过日志压缩策略进行日志持久化的流程示意图。
27.图4为本技术一实施例中日志持久化策略的流程示意图。
28.图5为本技术一实施例中日志持久化系统的模块图。
具体实施方式
29.以下通过特定的具体实例说明本技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本技术的其他优点与功效。本技术还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
30.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本技术的基本构想,遂图式中仅显示与本技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
31.术语简介:
32.slogger2:qnx操作系统的日志服务程序。
33.持久化:将瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中)。
34.api:应用程序编程接口。
35.请参阅图1,本技术提供一种日志持久化方法,该方法包括以下步骤。
36.步骤s100,通过差分方式获取日志数据,将所述日志数据存储在预设缓冲区,并对存储的日志数据进行计数,得到计数结果。
37.在一实施例中,以qnx的日志系统为例,传统qnx系统的slogger2记录的日志都存储在共享内存中,系统掉电或者重启之后存储在共享内存中的日志数据就会丢失的问题。因此,本技术提供一个中间管道作为预设的缓冲区,进行日志数据暂存管理。
38.在一实施例中,通过差分方式获取日志数据,包括以下步骤:
39.启动预设的日志管理服务,通过所述日志管理服务获取各系统端应用写入日志数据;
40.逐条读取所述日志管理服务中的日志数据,与前一个读取时间节点获取的日志数据进行比较,得到差异日志数据作为差分方式获取的日志数据。
41.在一实施例中,通过日志文件差分读取策略,在qnx操作系统启动slogger2日志服务后,所有的程序作为一个客户端,使用slogger2提供的系统api,写入日志数据到服务器处理。然后再调用系统指令slog2info读取日志数据;在读取日志数据时候,加上-w选项,可以每次读取一条日志数据。通过比较每次读取的日志数据与前一次读取的日志数据之间的差异,只将日志数据中的差异部分写入预设缓冲区。
42.步骤s110,在所述计数结果达到预设计数阈值后,读取所述预设缓冲区中的所有日志数据并存储到预设存储空间进行持久化。
43.在程序实现中,对读取的每一条数据进行计数并且存储到管道中,当数据量达到一定量后,将存储在内存中的数据,再持久化存储到存储介质中。
44.在一实施例中,读取所述预设缓冲区中的所有日志数据之后,包括:对读取的所述预设缓冲区中的日志数据进行压缩,并将得到的压缩文件与压缩时间节点关联后存入所述预设存储空间进行持久化。
45.在一实施例中,将得到的压缩文件与压缩时间节点关联,包括:在进行日志数据压缩时,读取系统时间;通过系统时间对压缩文件进行命名以完成压缩文件与时间节点的关联。
46.在一实施例中,将得到的压缩文件与压缩时间节点关联后存入所述预设存储空间进行持久化,包括:
47.对存入所述预设存储空间中的压缩文件进行计数,得到压缩文件数量;
48.若所述压缩文件数量达到预设数量阈值,则基于各所述压缩文件进行再次压缩后进行存储。
49.在一实施例中,通过预设的日志文件压缩策略将内存中存储的日志数据压缩后,再持久化到存储介质中的过程。首先会获取到系统时间用于压缩文件的命名,由于系统时间是一直累计的,因此避免了文件名重复的问题。然后对日志数据压缩后进行存储,当压缩后的存储文件达到10个以后,就将这10个文件再压缩一次,进一步降低系统的占用空间。
50.在一实施例中,日志文件持久化策略是,在启动qnx操作系统的slogger2日志服务后,日志持久化进程使用slog2info指令,读取系统日志数据,并且通过指定-w选项的方式,每次读取一条日志数据,然后将读取的日志数据放入预先建立的管道中,同时对读取到的日志数据数量进行计数;当日志数据达到10000条的时候,就将日志数据从管道中读取出来,然后对数据进行压缩以及持久化。由于使用了管道作为写入和读取日志数据的中间通道,对日志数据进行压缩和持久化的时候,不会影响到日志数据的写入,这样保证了在压缩以及持久化的过程中,日志数据不会丢失。
51.请参阅图2,图2本技术一实施例中通过差分读取日志数据的流程示意图。在一开始的时候,启动slogger2服务,此时各个应用就可以向slogger2服务中写入日志数据;在持久化日志服务中,采用slog2info指令并且加上-w选项,来差分读取每一条日志数据,并将日志数据写入到管道中,当日志数据到达10000条的时候,即对日志数据进行压缩以及持久化工作。日志数据采用差分的方式来读取,极大的减少了写入的数据量,减轻了系统的负载,提高了系统的持久化存储效率。另外日志数据是通过写入管道的方式,在日志数据持久化的过程中,也不会丢失日志数据。
52.请参阅图3,图3为本技术一实施例中通过日志压缩策略进行日志持久化的流程示意图。
53.当日志文件差分读取策略中的日志数据达到10000条时,就会读取系统时间,进行一次压缩日志文件处理,并且将系统时间用于压缩文件的文件名字,避免文件名重复导致日志文件的覆盖。当连续压缩10个文件之后,会进行压缩文件的二次压缩,然后删除之前压缩的10个文件。经过两次文件压缩之后,进一步降低了系统空间的占用
54.请参阅图4,图4为本技术一实施例中日志持久化策略的流程示意图。启动slogger2服务,然后通过差分的方式读取日志数据,并且将日志数据缓存到管道中;如果日志数据没有达到10000条则继续已差分的方式读取日志数据,当日志数据超过10000条,就读取系统时间用于后续压缩文件命名,随后从管道中读取日志数据,并且进行一次压缩。当压缩数据包达到10个的时候,统一对这10个数据包进行二次压缩并做持久化动作,最后删除之前压缩的10个数据包。这样在对日志文件进行持久化的时候,使用了二次压缩,进一步降低了系统空间的占用。
55.基于以上技术方案,本技术可有效解决qnx系统的slogger2记录的日志都存储在共享内存中,系统掉电或者重启之后存储在共享内存中的日志数据就会丢失的问题,方便后续导出日志文件进行分析。在对日志文件写入的时候,采用的是差分变化的数据才会追加写入,极大的减少了写入的数据量,减轻了系统的负载,提高了系统的持久化存储效率。在对日志文件进行持久化的时候,使用了二次压缩,进一步降低了系统空间的占用。
56.本实施例中提供了一种日志持久化系统,用于根据前述方法实施例中所述的日志持久化方法。由于系统实施例的技术原理与前述方法实施例的技术原理相似,因而不再对同样的技术细节做重复性赘述。
57.请参阅图5,一种日志持久化系统,包括:日志缓存模块10,用于通过差分方式获取日志数据,将所述日志数据存储在预设缓冲区,并对存储的日志数据进行计数,得到计数结果;持久化模块11,用于在所述计数结果达到预设计数阈值后,读取所述预设缓冲区中的所有日志数据并存储到预设存储空间进行持久化。
58.上述实施例仅例示性说明本技术的原理及其功效,而非用于限制本技术。任何熟悉此技术的人士皆可在不违背本技术的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本技术所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本技术的权利要求所涵盖。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献