1.本技术涉及通信技术,尤其涉及一种日志数据的存储方法及装置。
背景技术:2.网络设备、系统及服务程序等,在运作时都会产生一个叫日志文件(log)的事件记录,每一行日志数据都记载着日期、时间、使用者及动作等相关操作的描述。随着信息量的增加,怎样对日志数据进行存储成了亟待解决的问题。
3.在现有技术中,通常采用的日志数据存储方法为:申请内存(buffer)或双内存对日志数据进行暂时存储,待存满日志数据时,将日志数据保存到文件。
4.然而,通过上述方法,若申请的内存相对较大,而日志数据相对较少,则可能造成内存资源的浪费,若申请的内存相对较小,而日志数据相对较多,则可能造成日志数据的丢失。
技术实现要素:5.本技术提供一种日志数据的存储方法及装置,用以解决上述技术问题中的至少一种。
6.第一方面,本技术提供一种日志数据的存储方法,包括:
7.获取待存储的日志数据,并获取预先构建的初始链表的节点的类型属性,其中,链表用于存储日志数据;
8.若根据所述节点的类型属性确定所述初始链表中没有空闲的节点,则为所述初始链表构建新的节点,得到目标链表;
9.根据所述新的节点将所述待存储的日志数据存储至所述目标链表中。
10.在一些实施例中,所述初始链表的存储空间是基于预设的第一内存确定的,所述新的节点的数量是基于所述第一内存和预设的第二内存确定的,所述第二内存大于所述第一内存。
11.在一些实施例中,根据所述新的节点将所述待存储的日志数据存储至所述目标链表中,包括:
12.将所述待存储的日志数据存储至所述新的节点,并将存储了所述待存储的日志数据的新的节点插入至预设的日志缓存链表尾,得到新的日志缓存链表;
13.将所述新的日志缓存链表挂接至所述目标链表中。
14.在一些实施例中,将所述新的日志缓存链表挂接至所述目标链表中,包括:
15.将所述新的日志缓存链表中存储了所述待存储的日志数据的新的节点,挂接至所述目标链表中。
16.在一些实施例中,还包括:
17.遍历所述目标链表,得到所述目标链表中的每一日志缓存链表;
18.根据预设的日志数据的分类信息,对各日志缓存链表进行分类处理,得到不同分
类下的日志缓存链表;
19.将每一分类下的日志缓存链表中的日志数据写入至所属分类对应的文件中。
20.在一些实施例中,还包括:
21.针对任一分类对应的文件,确定所述任一分类对应的文件的存储空间;
22.若所述任一分类对应的文件的存储空间大于预设的第一阈值,则对所述任一分类对应的文件进行压缩处理,得到压缩文件。
23.在一些实施例中,还包括:
24.确定所述压缩文件的存储空间;
25.若所述压缩文件的存储空间大于预设的第二阈值,则确定与所述任一分类为相同分类的历史文件,并从历史文件中删除时间最早的文件。
26.在一些实施例中,所述待存储的日志数据为多个,获取待存储的日志数据,包括:
27.基于接收线程接收由多个业务线程发送的多个待存储的日志数据,其中,一个所述业务线程发送至少一个待存储的日志数据;
28.根据每一待存储的日志数据的时间信息和线程信息,对每一待存储的日志数据进行封装处理,得到每一封装处理后的日志数据。
29.在一些实施例中,还包括:
30.根据预设的日志数据的分类信息,确定每一封装处理后的日志数据的类别属性;
31.根据预设的类别属性与存储等级之间的映射关系,对各封装处理后的日志数据进行过滤处理。
32.第二方面,本技术提供一种日志数据的存储装置,包括:
33.获取单元,用于获取待存储的日志数据,并获取预先构建的初始链表的节点的类型属性,其中,链表用于存储日志数据;
34.构建单元,用于若根据所述节点的类型属性确定所述初始链表中没有空闲的节点,则为所述初始链表构建新的节点,得到目标链表;
35.存储单元,用于根据所述新的节点将所述待存储的日志数据存储至所述目标链表中。
36.在一些实施例中,所述初始链表的存储空间是基于预设的第一内存确定的,所述新的节点的数量是基于所述第一内存和预设的第二内存确定的,所述第二内存大于所述第一内存。
37.在一些实施例中,所述存储单元,包括:
38.存储子单元,用于将所述待存储的日志数据存储至所述新的节点;
39.插入子单元,用于将存储了所述待存储的日志数据的新的节点插入至预设的日志缓存链表尾,得到新的日志缓存链表;
40.挂接子单元,用于将所述新的日志缓存链表挂接至所述目标链表中。
41.在一些实施例中,挂接子单元用于,将所述新的日志缓存链表中存储了所述待存储的日志数据的新的节点,挂接至所述目标链表中。
42.在一些实施例中,还包括:
43.遍历单元,用于遍历所述目标链表,得到所述目标链表中的每一日志缓存链表;
44.分类单元,用于根据预设的日志数据的分类信息,对各日志缓存链表进行分类处
理,得到不同分类下的日志缓存链表;
45.写入单元,用于将每一分类下的日志缓存链表中的日志数据写入至所属分类对应的文件中。
46.在一些实施例中,还包括:
47.第一确定单元,用于针对任一分类对应的文件,确定所述任一分类对应的文件的存储空间;
48.压缩单元,用于若所述任一分类对应的文件的存储空间大于预设的第一阈值,则对所述任一分类对应的文件进行压缩处理,得到压缩文件。
49.在一些实施例中,还包括:
50.第二确定单元,用于确定所述压缩文件的存储空间,并若所述压缩文件的存储空间大于预设的第二阈值,则确定与所述任一分类为相同分类的历史文件;
51.删除单元,用于从历史文件中删除时间最早的文件。
52.在一些实施例中,所述待存储的日志数据为多个,所述获取单元,包括:
53.接收子单元,用于基于接收线程接收由多个业务线程发送的多个待存储的日志数据,其中,一个所述业务线程发送至少一个待存储的日志数据;
54.封装子单元,用于根据每一待存储的日志数据的时间信息和线程信息,对每一待存储的日志数据进行封装处理,得到每一封装处理后的日志数据。
55.在一些实施例中,所述获取单元,还包括:
56.确定子单元,用于根据预设的日志数据的分类信息,确定每一封装处理后的日志数据的类别属性;
57.过滤子单元,用于根据预设的类别属性与存储等级之间的映射关系,对各封装处理后的日志数据进行过滤处理。
58.第三方面,本技术实施例提供了一种电子设备,包括:存储器,处理器;
59.存储器;用于存储所述处理器可执行指令的存储器;
60.其中,所述处理器被配置为执行如第一方面所述的方法。
61.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面所述的方法。
62.第五方面,本技术实施例提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面所述的方法。
63.本技术提供的日志数据的存储方法及装置,包括:获取待存储的日志数据,并获取预先构建的初始链表的节点的类型属性,其中,链表用于存储日志数据,若根据节点的类型属性确定初始链表中没有空闲的节点,则为初始链表构建新的节点,得到目标链表,根据新的节点将待存储的日志数据存储至目标链表中,在本实施例中,通过基于链表对日志数据进行存储,且在初始链表的节点中没有空闲的节点时,构建新的节点(为空闲的节点),并基于新的节点对待存储的日志数据进行存储的特征,避免了相关技术中,采用固定内存对日志数据进行存储时,可能造成日志数据丢失的弊端,通过构建新的节点对日志数据进行存储,提高了日志数据存储的灵活性和多样性,且提高了日志数据存储的准确性和可靠性的技术效果。
附图说明
64.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
65.图1为本技术一个实施例的日志数据的存储方法的示意图;
66.图2为本技术另一实施例的日志数据的存储方法的示意图;
67.图3为本技术另一实施例的日志数据的存储方法的示意图;
68.图4为本技术实施例的日志数据的存储方法的原理图;
69.图5为本技术一个实施例的日志数据的存储装置的示意图;
70.图6为本技术另一实施例的日志数据的存储装置的示意图;
71.图7为本技术实施例的电子设备的示意图。
72.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
73.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
74.随着电子设备的发展,如终端设备等的发展,以及电子设备的智能化,信息的量有了突飞猛进的增长,如用户因使用电子设备而产生的日志数据也在不断的增加。
75.在相关技术中,通常可以采用下述几种方法对日志数据进行存储:
76.第一种方法为:申请一个相对较大的内存,基于该内存对日志数据进行存储,待该内存中存满日志数据时,将该内存中的日志数据保存至文件。
77.然而,若采用该种方法对日志数据进行存储,由于内存相对较大,则在日志数据相对较少时,很容易造成内存资源的浪费的技术问题。
78.第二种方法为:申请双内存,基于双内存对日志数据进行存储,待双内存中存满日志数据时,将双内存中的日志数据保存至文件。
79.同理,若采用该种方法对日志数据进行存储,由于内存相对较大,则在日志数据相对较少时,很容易造成内存资源的浪费的技术问题;且若双内存相对较小,则当日志数据相对较多时,很容易造成日志数据的丢失的技术问题。
80.第三种方法为:将日志数据直接保存至文件。
81.然而,采用该种方法对日志数据进行存储,需要反复执行输入/输出(input/output,io)操作,从而造成延时较高,且影响电子设备的性能的技术问题。
82.为了避免上述技术问题中的至少一种,本技术的发明人经过创造性地劳动,得到了本技术的发明构思:通过链表对日志数据进行存储,并在链表中没有空闲的节点时,构建新的节点,并基于包括新的节点的链表对日志数据进行存储。
83.下面以具体地实施例对本发明本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似
的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明本技术的实施例进行描述。
84.请参阅图1,图1为本技术一个实施例的日志数据的存储方法的示意图。
85.如图1所示,该方法包括:
86.s101:获取待存储的日志数据,并获取预先构建的初始链表的节点的类型属性。
87.其中,链表用于存储日志数据。
88.示例性地,本实施例的执行主体可以为日志数据的存储装置(下文简称存储装置),且存储装置可以为服务器(如本地服务器,或者,云端服务器),也可以为电子设备(如终端设备),也可以为处理器,也可以为芯片,等等,本实施例不做限定。
89.值得说明地是,考虑到日志数据的存储依赖于内存,即依赖于存储空间的大小,因此,本实施例的方法尤其适用于内存相对较小的设备。例如,记录仪(如行车记录仪等),又如手机等,此处不再一一列举。
90.其中,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点(链表中每一个元素称为节点)组成,每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
91.类型属性包括空闲类型和非空闲类型。示例性地,若某节点存储了日志数据,则该节点的类型属性为非空闲类型;反之,若某节点没有存储日志数据,则该节点的类型属性为空闲属性。
92.应该理解地是,初始链表中的“初始”用于与后文中的目标链表进行区分,而不能理解为对链表的限定。
93.s102:若根据节点的类型属性确定初始链表中没有空闲的节点,则为初始链表构建新的节点,得到目标链表。
94.示例性地,若初始链表中的每一节点均为非空闲属性,则存储装置可以确定初始链表中没有空闲的节点,也即,初始链表中已经没有可以用于存储日志数据的节点,则存储装置为初始链表构建新的节点。
95.s103:根据新的节点将待存储的日志数据存储至目标链表中。
96.值得说明地是,在本技术实施例中,引入了:基于链表对日志数据进行存储,且在初始链表的节点中没有空闲的节点时,构建新的节点(为空闲的节点),并基于新的节点对待存储的日志数据进行存储的特征,避免了相关技术中,采用固定内存对日志数据进行存储时,可能造成日志数据丢失的弊端,通过构建新的节点对日志数据进行存储,提高了日志数据存储的灵活性和多样性,且提高了日志数据存储的准确性和可靠性的技术效果。
97.请参阅图2,图2为本技术另一实施例的日志数据的存储方法的示意图。
98.如图2所示,该方法包括:
99.s201:获取待存储的日志数据,并获取预先构建的初始链表的节点的类型属性。
100.其中,链表用于存储日志数据,初始链表的存储空间是基于预设的第一内存确定的。
101.示例性地,关于s201的部分描述,可以参见s101,此处不再赘述。
102.在本实施例中,对初始链表的存储空间进行了限定,且具体为:初始链表的存储空
间是基于第一内存确定的。
103.其中,第一内存可以由存储装置基于需求、历史记录、以及试验等方式进行设置,本实施例不做限定。
104.s202:若根据节点的类型属性确定初始链表中没有空闲的节点,则为初始链表构建新的节点,得到目标链表。
105.其中,新的节点的数量是基于第一内存和第二内存确定的,第二内存大于第一内存。
106.示例性地,关于s202的部分描述,可以参见s102,此处不再赘述。
107.在本实施例中,对存储装置具体在初始链表的基础上,构建多少个新的节点进行了限定,且具体为:根据第一内存和第二内存,确定在初始链表上构建新的节点的数量。
108.其中,本实施例中提出了对初始链表的节点的数量进行新增,相应地,可以理解为链表的存储空间为可以为动态的存储空间。如,在初始链表的存储空间不足以对待存储的日志数据进行存储时,可以对初始链表的存储空间进行扩展(即在初始链表上构建新的节点)。
109.进一步可以理解为,在本实施例中,存储装置通过设置两个水位标识位的方式对待存储的日志数据进行存储。具体地:第一内存可以理解为一个水位标识位,第二内存可以理解为另一个水位标识位,而第二内存大于第一内存,则第一内存可以理解为为了避免日志数据的丢失而设置的低门槛的内存,而第二内存可以理解为为了避免存储空间的浪费而设置的高门槛的内存。
110.值得说明地是,在本实施例中,通过第一内存和第二内存,对新的节点的数量进行确定,可以使得初始链表的存储空间的可变动幅度的灵活性相对较高,可以使得用于存储日志数据的存储空间具有较高的灵活性,从而可以提高资源利用率,且可以避免日志数据丢失的技术效果。
111.s203:将待存储的日志数据存储至新的节点,并将存储了待存储的日志数据的新的节点插入至预设的日志缓存链表尾,得到新的日志缓存链表。
112.在一些实施例中,存储装置也可能根据节点的类型属性确定出初始链表中包括空闲的节点,则相应地,存储装置也可以将待存储的日志数据存储至空闲的节点,并将存储了待存储的日志数据的空闲节点插入至日志缓存链表尾,得到新的日志缓存链表。
113.s204:将新的日志缓存链表挂接至目标链表中。
114.在一些实施例中,目标链表的存储空间可能相对较大,则存储装置可以在将新的日志缓存链表挂接至目标链表之前,对目标链表的存储空间进行确定,并当目标链表的存储空间大于某存储空间时,存储装置可以对目标链表中的部分节点进行释放处理。
115.值得说明地是,在本实施例中,通过将待存储的日志数据存储至新的节点,以得到新的日志缓存链表,从而将新的日志缓存链表挂接至目标链表中,实现了日志数据存储的灵活性和可靠性的技术效果。
116.在一些实施例中,s204可以包括:将新的日志缓存链表中存储了待存储的日志数据的新的节点,挂接至目标链表中。
117.也就是说,在一些实施例中,存储装置可以在初始链表中添加新的节点,得到目标链表(目标链表即为增加了新的节点的初始链表),新的节点用于存储待存储的日志数据,
将目标链表中的新的节点摘取,将该节点插入至日志缓存链表,得到新的日志缓存链表,新的日志缓存链表的长度超过某预设阈值(可以由存储装置基于需求、历史记录、以及试验等方式进行设置,本实施例不做限定)时,可以将对新的日志缓存链表进行存储至文件的操作,且可以将新的节点从新的日志缓存链表中摘除,挂接至目标链表中。
118.s205:遍历目标链表,得到目标链表中的每一日志缓存链表。
119.在一些实施例中,存储装置可以基于预设的时间段,每间隔预设的时间段,获取该时间段内的链表的各日志缓存链表。
120.在另一些实施例中,存储装置也可以基于接收到的触发消息,获取该时间段内的链表的各日志缓存链表。其中,触发消息用于指示存储装置执行遍历操作。
121.s206:根据预设的日志数据的分类信息,对各日志缓存链表进行分类处理,得到不同分类下的日志缓存链表。
122.例如,日志数据可以包括系统system日志数据和监控(gps)日志数据等。
123.s207:将每一分类下的日志缓存链表中的日志数据写入至所属分类对应的文件中。
124.在本实施例中,通过分类信息将每一分类下的日志缓存链表中的日志数据写入至所属分类对应的文件中,可以使得文件中的日志数据具有同类性,便于后续查阅。
125.s208:针对任一分类对应的文件,确定任一分类对应的文件的存储空间。
126.s209:若任一分类对应的文件的存储空间大于预设的第一阈值,则对任一分类对应的文件进行压缩处理,得到压缩文件。
127.在本实施例中,针对任一分类对应的文件,基于第一阈值对任一分类对应的文件进行压缩处理,可以提高文件的存储空间的利用率。
128.在一些实施例中,还可以基于每一日志缓存链表的存储空间对相应分类的文件进行压缩处理。
129.例如,若某一分类对应的文件中的某一日志缓存链表的存储空间达到预设的值(同理,可以由存储装置基于需求和历史记录等进行设置),则对该分类对应的文件进行压缩处理。
130.在另一些实施例中,可以结合文件的存储空间和日志缓存链表的存储空间对相应分类的文件进行压缩处理。例如,若文件的存储空间先达到第一阈值,则对该文件进行压缩处理,若某一日志缓存链表的存储空间达到相应的预设的值,则对该日志缓存链表对应的文件进行压缩处理。
131.s210:确定压缩文件的存储空间。
132.s211:若压缩文件的存储空间大于预设的第二阈值,则确定与任一分类为相同分类的历史文件,并从历史文件中删除时间最早的文件。
133.同理,第二阈值可以由存储装置基于需求、历史记录、以及试验等方式进行设置,本实施例不做限定。
134.值得说明地是,在本实施例中,通过在压缩文件的存储空间大于第二阈值时,从历史文件中删除时间最早的文件,可以使得存储空间被释放,从而提高存储空间的利用率,且满足新的压缩文件的存储需求的技术效果。
135.请参阅图3,图3为本技术另一实施例的日志数据的存储方法的示意图。
136.如图3所示,该方法包括:
137.s301:基于接收线程接收由多个业务线程发送的多个待存储的日志数据。
138.其中,一个业务线程发送至少一个待存储的日志数据。
139.示例性地,图4为本技术实施例的日志数据的存储方法的原理图。
140.如图4所示,业务装置中可以包括多个线程,如图4中的业务线程1至业务线程n,每一业务线程均可对待存储的日志数据进行传输。
141.且如图4所示,业务装置与存储装置之间通过套接字(socket)连接,如每一业务线程均通过socket连接至存储装置,且具体连接至存储装置中的接收线程。
142.值得说明地是,在本实施例中,业务装置与存储装置之间通过socket进行待存储的日志数据的传输,可以实现socket异步传输,从而实现各业务线程之间互不干扰,提高了待存储的日志数据的传输的准确性和可靠性的技术效果。
143.具体地,业务装置与存储装置之间通过socket异步传输方式,可以理解为客户端/服务器模式(c/s)模式的传输方式,业务装置可以理解为client端,存储装置可以理解为service端,client端与service端之间,采用af_unix域socket通信方式,tcp/udp做数据传输。
144.值得说明地是,在本实施例中,通过采用c/s模式,并采用af_unix域socket通信方式,可以避免传输各待存储的日志数据的延时较高,提高了待存储的日志数据传输的效率和可靠性的技术效果。
145.s302:根据每一待存储的日志数据的时间信息和线程信息,对每一待存储的日志数据进行封装处理,得到每一封装处理后的日志数据。
146.在本实施例中,通过对每一待存储的日志数据进行封装处理,得到每一封装处理后的日志数据,可以使得每一封装处理后的日志数据的信息更丰富,提高每一封装处理后的日志数据的可靠性的技术效果。
147.在一些实施例中,存储装置可以对接收到每一业务线程发送的待存储的日志数据进行校验,并若校验成功,则存储装置根据每一待存储的日志数据的时间信息和线程信息,对每一待存储的日志数据进行封装处理,得到每一封装处理后的日志数据;反之,若校验失败,则存储装置可以向相应的业务线程反馈失败的提示消息。
148.且,存储装置具体可以调用write日志数据ger函数在write日志数据ger中对接收到的每一待存储的日志数据进行校验。
149.s303:根据预设的日志数据的分类信息,确定每一封装处理后的日志数据的类别属性。
150.s304:根据预设的类别属性与存储等级之间的映射关系,对各封装处理后的日志数据进行过滤处理。
151.其中,存储等级可以表征类别属性下的日志数据的重要性,一些实施例中,可以设置为:若类别属性下的日志数据越重要,则存储等级越高;另一些实施例中,也可以设置为:若类别属性下的日志数据越重要,则存储等级越低。
152.若类别属性下的日志数据越重要,存储等级越高,则s304可以理解为:若某待封装处理后的日志数据的类别属性对应的存储等级较低,则可以将该封装处理后的日志数据进行过滤处理,即可以将该封装处理后的日志数据进行删除。
153.在一些实施例中,可以将过滤处理的封装后的日志数据向预设的串口输出,将剩下的封装处理后的日志数据执行后续操作。
154.值得说明地是,在本实施例中,通过对各封装处理后的日志数据进行过滤处理,可以过滤部分日志数据,提高存储资源的利用率的技术效果。
155.s305:若根据节点的类型属性确定初始链表中没有空闲的节点,则为初始链表构建新的节点,得到目标链表。
156.示例性地,关于s305地描述,可以参见s102地描述,也可以参见s202地描述,此处不再赘述。
157.结合图4可知,在一些实施例中,存储装置还可以包括内存,且链表可以构建于内存中,即链表可以为基于内存构建生成的用于存储日志数据的数据结构。
158.s306:根据新的节点将待存储的日志数据存储至目标链表中。
159.示例性地,关于s306地描述,可以参见s103地描述,也可以参见s203至s204地描述,此处不再赘述。
160.应该理解地是,还可以将本实施例的方案与上述s205至s211中的至少部分方案进行组合,得到新的实施例,此处不再赘述。
161.示例性地,结合图4可知,当本实施例结合上述得到压缩文件的实施例时,存储装置还可以包括文件模块,可以用于存储压缩文件。
162.请参阅图5,图5为本技术一个实施例的日志数据的存储装置的示意图。
163.如图5所示,日志数据的存储装置500包括:
164.获取单元501,用于获取待存储的日志数据,并获取预先构建的初始链表的节点的类型属性,其中,链表用于存储日志数据。
165.构建单元502,用于若根据节点的类型属性确定初始链表中没有空闲的节点,则为初始链表构建新的节点,得到目标链表。
166.存储单元503,用于根据新的节点将待存储的日志数据存储至目标链表中。
167.请参阅图6,图6为本技术另一实施例的日志数据的存储装置的示意图。
168.如图6所示,日志数据的存储装置600包括:
169.获取单元601,用于获取待存储的日志数据,并获取预先构建的初始链表的节点的类型属性,其中,链表用于存储日志数据。
170.结合图6可知,在一些实施例中,待存储的日志数据为多个,获取单元601包括:
171.接收子单元6011,用于基于接收线程接收由多个业务线程发送的多个待存储的日志数据,其中,一个业务线程发送至少一个待存储的日志数据。
172.封装子单元6012,用于根据每一待存储的日志数据的时间信息和线程信息,对每一待存储的日志数据进行封装处理,得到每一封装处理后的日志数据。
173.确定子单元6013,用于根据预设的日志数据的分类信息,确定每一封装处理后的日志数据的类别属性。
174.过滤子单元6014,用于根据预设的类别属性与存储等级之间的映射关系,对各封装处理后的日志数据进行过滤处理。
175.构建单元602,用于若根据节点的类型属性确定初始链表中没有空闲的节点,则为初始链表构建新的节点,得到目标链表。
176.在一些实施例中,初始链表的存储空间是基于预设的第一内存确定的,新的节点的数量是基于第一内存和预设的第二内存确定的,第二内存大于第一内存。
177.存储单元603,用于根据新的节点将待存储的日志数据存储至目标链表中。
178.结合图6可知,在一些实施例中,存储单元603包括:
179.存储子单元6031,用于将待存储的日志数据存储至所述新的节点。
180.插入子单元6032,用于将存储了待存储的日志数据的新的节点插入至预设的日志缓存链表尾,得到新的日志缓存链表。
181.挂接子单元6033,用于将新的日志缓存链表挂接至目标链表中。
182.在一些实施例中,挂接子单元6033用于,将新的日志缓存链表中存储了待存储的日志数据的新的节点,挂接至目标链表中。
183.遍历单元604,用于遍历目标链表,得到目标链表中的每一日志缓存链表。
184.分类单元605,用于根据预设的日志数据的分类信息,对各日志缓存链表进行分类处理,得到不同分类下的日志缓存链表。
185.写入单元606,用于将每一分类下的日志缓存链表中的日志数据写入至所属分类对应的文件中。
186.第一确定单元607,用于针对任一分类对应的文件,确定任一分类对应的文件的存储空间。
187.压缩单元608,用于若任一分类对应的文件的存储空间大于预设的第一阈值,则对任一分类对应的文件进行压缩处理,得到压缩文件。
188.第二确定单元609,用于确定压缩文件的存储空间,并若压缩文件的存储空间大于预设的第二阈值,则确定与任一分类为相同分类的历史文件。
189.删除单元610,用于从历史文件中删除时间最早的文件。
190.根据本技术的实施例,本技术还提供了一种电子设备和一种可读存储介质。
191.根据本技术的实施例,本技术还提供了一种计算机程序产品,程序产品包括:计算机程序,计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得电子设备执行上述任一实施例提供的方案。
192.如图7所示,是根据本技术实施例的日志数据的存储方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本技术的实现。
193.如图7所示,该电子设备包括:一个或多个处理器701、存储器702,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个
设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图7中以一个处理器701为例。
194.存储器702即为本技术所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本技术所提供的日志数据的存储方法。本技术的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本技术所提供的日志数据的存储方法。
195.存储器702作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本技术实施例中的日志数据的存储方法对应的程序指令/模块。处理器701通过运行存储在存储器702中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的日志数据的存储方法。
196.存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据日志数据的存储方法的电子设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至日志数据的存储方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
197.日志数据的存储方法的电子设备还可以包括:输入装置703和输出装置704。处理器701、存储器702、输入装置703和输出装置704可以通过总线或者其他方式连接,图7中以通过总线连接为例。
198.输入装置703可接收输入的数字或字符信息,以及产生与日志数据的存储方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置704可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
199.此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
200.这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读
介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
201.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
202.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
203.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
204.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
205.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。