基于嵌入式Linux系统多程序日志处理方法、装置及终端与流程

文档序号:31793459发布日期:2022-10-14 16:35阅读:59来源:国知局
基于嵌入式Linux系统多程序日志处理方法、装置及终端与流程
基于嵌入式linux系统多程序日志处理方法、装置及终端
技术领域
1.本发明涉及自动化终端领域,特别是涉及一种基于嵌入式linux系统多程序日志处理方法、装置及终端。


背景技术:

2.自动化终端是集配电台区供用电信息采集、各采集终端或电能表数据收集、设备状态监测及通讯组网、就地化分析决策、协同计算等功能于一体的智能化终端设备,采用硬件平台化、功能软件化、结构模块化、软硬件解耦设计,满足高性能并发、大容量存储、多采集对象需求。传统的嵌入linux自动化终端设备一般只运行一个独立的业务程序,程序运行产生日志会形成一个独立文件,即使有多个程序在运行,各自的程序业务关联性也不大,同时各自程序的日志也是独立生成,不会统一形成一个日志文件,且各程序的日志之间也没什么关联性。
3.新型的自动化终端产品使用嵌入式linux系统,采用多应用程序协作工作方式,即一台终端设备内有众多应用程序一起相互依赖、协同完成工作。当某个功能出现了问题时,因各应用程序的日志是单独分开记录存储的,分析问题时就需要同时打开每一个应用程序的日志,并按照日志生成的时间顺序,多文件同步、相互比对,这就给问题分析带来了很大困难和时间成本等。
4.基于此,本领域亟需一种新的基于嵌入式linux系统多程序日志处理方法、装置及终端来解决背景技术存在的技术问题。


技术实现要素:

5.本发明提供一种基于嵌入式linux系统多程序日志处理方法、装置及终端,能够将各应用程序的日志数据按照产生的先后顺序统一生成并合并记录到一起,以形成一个统一的日志文件,加快问题的分析、和排查速度,大大提高了分析日志的效率。
6.为解决上述技术问题,本发明采用的一个技术方案是:提供一种基于嵌入式linux系统多程序日志处理方法,用于使用嵌入式linux系统的自动化终端,所述自动化终端内安装有多个应用程序,所述方法包括:
7.初始化资源互斥信号量以及共享内存,等待应用程序产生日志信息;
8.当应用程序产生日志信息后,对日志信息添加时间标签和程序名称,得到日志数据;
9.对所述共享内存进行加锁,加锁成功后将所述时间标签最早的日志数据发送至所述共享内存;
10.读取所述共享内存内的日志数据,将日志数据发送至缓存空间,对所述共享内存进行解锁,重新对所述共享内存进行加锁以继续发送日志数据至所述共享内存;
11.将一个预设时间周期内所有应用程序产生的日志数据根据所述时间标签进行排列合并成一个日志文件,将所述日志文件暂存在缓存空间;
12.将所述缓存空间内的全部所述日志文件写入存储器。
13.优选地,所述对所述共享内存进行加锁,加锁成功后将所述时间标签最早的日志数据发送至所述共享内存的步骤还包括:
14.若加锁失败,则继续对所述共享内存进行加锁,直至加锁成功。
15.优选地,所述将所述缓存空间内的全部所述日志文件写入存储器的步骤之前,还包括:
16.判断所述日志文件是否大于预设阈值;
17.若大于所述预设阈值,则重置所述日志文件的写入位置,根据日志数据的时间标签覆盖时间标签较前的日志数据,并保存时间标签晚的日志数据,使所述日志文件小于等于所述预设阈值,将所述日志文件存储到缓存空间;
18.若小于等于所述预设阈值,则直接将所述日志文件存储到缓存空间。
19.优选地,所述将所述缓存空间内的全部所述日志文件写入存储器的步骤包括:
20.判断所述缓存空间的存储量是否达到预设存储量,若是,则将所述缓存空间内的全部所述日志文件写入存储器。
21.优选地,所述将所述日志文件写入存储器的步骤之后,还包括:
22.清空缓存空间内的所述日志文件。
23.优选地,所述方法还包括:
24.定期删除超出预设时间范围的日志文件。
25.优选地,所述预设时间周期为24小时。
26.为解决上述技术问题,本发明采用的一个技术方案是:提供一种基于嵌入式linux系统多程序日志处理装置,包括:
27.初始化模块,用于初始化资源互斥信号量以及共享内存,等待应用程序产生日志信息;
28.数据处理模块,用于当应用程序产生日志信息后,对日志信息添加时间标签和程序名称,得到日志数据;
29.第一数据传输模块,用于对所述共享内存进行加锁,加锁成功后将所述时间标签最早的日志数据发送至所述共享内存;
30.第二数据传输模块,用于读取所述共享内存内的日志数据,将日志数据发送至缓存空间,对所述共享内存进行解锁,重新对所述共享内存进行加锁以继续发送日志数据至所述共享内存;
31.日志合并模块,用于将一个预设时间周期内所有应用程序产生的日志数据根据所述时间标签进行排列合并成一个日志文件,将所述日志文件暂存在缓存空间;
32.写入模块,用于将所述缓存空间内的全部所述日志文件写入存储器。
33.为解决上述技术问题,本发明采用的再一个技术方案是:提供一种自动化终端,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的基于嵌入式linux系统多程序日志处理方法。
34.为解决上述技术问题,本发明采用的再一个技术方案是:提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述基于嵌入式linux系统多程序日志处理方法。
35.本发明的有益效果是:本发明第一实施例的基于嵌入式linux系统多程序日志处理方法通过将多个应用程序产生的日志信息,按照日志信息产生的先后顺序,在增加时间、程序名等标签后得到日志数据,合并形成一个日志文件,在分析问题时,只需要打开一份日志文件,且不需要再去同步日志数据,从而提高问题的分析效率,减少工作量;同时还设置了缓存空间,将生成的日志文件暂存到缓存空间,将多个日志文件一次性写入存储器,减少了存储器的频繁写入,有效延长了存储器的使用寿命。
附图说明
36.图1是本发明第一实施例的基于嵌入式linux系统多程序日志处理方法的流程示意图;
37.图2是本发明第二实施例的基于嵌入式linux系统多程序日志处理方法的流程示意图;
38.图3是本发明第三实施例的基于嵌入式linux系统多程序日志处理方法的流程示意图;
39.图4是本发明实施例的基于嵌入式linux系统多程序日志处理装置的结构示意图;
40.图5是本发明实施例的自动化终端的结构示意图;
41.图6是本发明实施例的计算机存储介质的结构示意图。
具体实施方式
42.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
43.本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本发明实施例中所有方向性指示(诸如上、下、左、右、前、后
……
)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
44.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
45.本发明实施例的自动化终端使用嵌入式linux系统,自动化终端内安装有多个应用程序。其采用多应用程序协作工作方式,即一台终端设备内有众多应用程序一起相互依赖、协同完成工作。
46.图1是本发明第一实施例的基于嵌入式linux系统多程序日志处理方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图1所示的流程顺序为限。
如图1所示,该方法包括步骤:
47.步骤s101:初始化资源互斥信号量以及共享内存,等待应用程序产生日志信息。
48.在步骤s101中,信号量是一种用于实现计算机资源共享的ipc机制之一,其本质是一个计数器。信号量是在多进程环境下实现资源互斥访问或共享资源访问的方法,可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,进程/线程必须获取一个信号量;一旦该关键代码段完成了,那么该进程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个进程释放信号量。共享内存是一种允许两个或多个进程共享一个给定的存储区,这一段存储区可以被两个或两个以上的进程映射至自身的地址空间中,一个进程写入共享内存的信息,可以被其他使用这个共享内存的进程,通过一个简单的内存读取操作取出,从而实现了进程间的通信。在进行日志信息采集之前需要先对资源互斥信号量以及共享内存进行初始化,以能实现对日志信息进行采集。完成初始化后,等待应用程序产生日志信息。
49.步骤s102:当应用程序产生日志信息后,对日志信息添加时间标签和程序名称,得到日志数据。
50.在步骤s102中,当某个应用程序产生日志信息后,进一步对日志信息添加时间标签和程序名称得到日志数据。具体地,日志数据除了时间和程序名称,还包括应用程序的动作。在一个实施例中,日志数据的格式可以为:dd_hhmmss_nnn[ccccccc]xxxxxxx....。其中,dd代表日期,hhmmss代表具体时间,nnn[ccccccc]代表程序名称,xxxxxxx代表应用程序的具体动作。日志信息的示例如下所示:
[0051]
13_081322_411[c-upcomm]reqoffline:ok,user=0;
[0052]
13_081322_514[c-upcomm][gprs]cprotoif::doifrelated:if no rx reset app!;
[0053]
13_081322_725[c-base]capinshutdown:capvol 26!;
[0054]
13_081322_725[c-base]##########dwclick-g_dwacoffclick》=6;
[0055]
13_081322_827[c-base]progstate:key exit!。
[0056]
步骤s103:对所述共享内存进行加锁,加锁成功后将所述时间标签最早的日志数据发送至所述共享内存。
[0057]
在步骤s103中,在发送日志数据之前,需要先对共享内存进行加锁,以确保共享内存没有被其他日志数据占用。若加锁成功,则安装时间标签上记录的时间,将时间最早的日志数据发送至共享内存。若加锁失败,证明共享内存正在被其他进程使用,则继续对所述共享内存进行加锁,直至加锁成功,再将所述时间标签最早的日志数据发送至所述共享内存。
[0058]
步骤s104:读取所述共享内存内的日志数据,将日志数据发送至缓存空间,对所述共享内存进行解锁,重新对所述共享内存进行加锁以继续发送日志数据至所述共享内存。
[0059]
通过步骤s103和步骤s104,在发送日志数据之前,先对共享内存进行加锁,以确保共享内存没有被其他进程占用,处理一条日志数据完成后再进行解锁,在需要接收下一条日志数据之前重新对所述共享内存进行加锁,一直循环进行,以防止不同应用程序的日志数据相互之间的串扰问题。
[0060]
步骤s105:将一个预设时间周期内所有应用程序产生的日志数据根据所述时间标签进行排列合并成一个日志文件,将所述日志文件暂存在缓存空间。
[0061]
在步骤s105中,预设时间周期为24小时,当然也可以根据实际情况进行设置,例如12小时或48小时等,在此不作限定。
[0062]
具体地,将一个预设时间周期内所有应用程序产生的日志数据根据时间标签进行排列,合并在一个文件里面,形成一个日志文件,该日志文件即包括了所有应用程序的日志信息。在本实施例中,需要对日志文件进行命名,日志文件的命名格式为:debuginfo_地址_日期.inf。
[0063]
例如:debuginfo_112233445566_20220212.inf。
[0064]
需要说明的是,缓存空间只是日志文件的暂存空间,不是最终的存储空间。
[0065]
步骤s106:将所述缓存空间内的全部所述日志文件写入存储器。
[0066]
在步骤s106中,将暂存在缓存空间内的多个日志文件一次性写入到存储器中,以供技术人员查看。
[0067]
进一步地,步骤s106包括:判断所述缓存空间的存储量是否达到预设存储量,若是,则将所述缓存空间内的全部所述日志文件写入存储器。通过设置暂存日志文件的缓存空间,当缓存空间的存储量是否达到预设存储量后再一次性将多个日志文件写入存储器,能有效地减少写入存储器的次数,进一步避免磁盘出现坏道。
[0068]
本发明第一实施例的基于嵌入式linux系统多程序日志处理方法通过将多个应用程序产生的日志信息,按照日志信息产生的先后顺序,在增加时间、程序名等标签后得到日志数据,合并形成一个日志文件,在分析问题时,只需要打开一份日志文件,且不需要再去同步日志数据,从而提高问题的分析效率,减少工作量;同时还设置了缓存空间,将生成的日志文件暂存到缓存空间,再一次性将多个日志文件写入存储器,减少了存储器的频繁写入,有效延长了存储器的使用寿命。
[0069]
图2是本发明第二实施例的基于嵌入式linux系统多程序日志处理方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图2所示的流程顺序为限。第二实施例在上述的基础上,进一步增加了步骤s107。
[0070]
具体地,在步骤s106之后,还包括步骤s107:清空缓存空间内的所述日志文件。通过步骤s107的设置,清空已经写入存储器的日志文件,及时释放缓存空间。
[0071]
图3是本发明第三实施例的基于嵌入式linux系统多程序日志处理方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图3所示的流程顺序为限。
[0072]
第三实施例在上述的基础上,在步骤s106之前,还包括:
[0073]
步骤s301:判断所述日志文件是否大于预设阈值。若大于所述预设阈值,则执行步骤s302;若小于等于所述预设阈值,则直接执行步骤s106。
[0074]
步骤s302:若大于所述预设阈值,则重置所述日志文件的写入位置,根据日志数据的时间标签覆盖时间标签较前的日志数据,并保存时间标签晚的日志数据,使所述日志文件小于等于所述预设阈值,再执行步骤s106。
[0075]
本实施例在上述实施例的基础上,进一步增加了对日志文件大小的限制,避免应用程序异常后产生大量日志数据,从而无限制的占用存储空间。同时采用持续循环追加覆盖的存储方式,日志文件的头4个字节存储当前写入的位置,即如果日志文件超过了最大限制,则始终能保存最近的日志数据。
[0076]
在其中一个实施例中,为了释放存储器的存储空间,基于嵌入式linux系统多程序
日志处理方法还包括:定期删除超出预设时间范围的日志文件。
[0077]
图4是本发明实施例的基于嵌入式linux系统多程序日志处理装置40的结构示意图。如图4所示,该装置40包括初始化模块41、数据处理模块42、第一数据传输模块43、第二数据传输模块44、日志合并模块45以及写入模块46。
[0078]
初始化模块41用于初始化资源互斥信号量以及共享内存,等待应用程序产生日志信息;
[0079]
数据处理模块42用于当应用程序产生日志信息后,对日志信息添加时间标签和程序名称,得到日志数据;
[0080]
第一数据传输模块43用于对所述共享内存进行加锁,加锁成功后将所述时间标签最早的日志数据发送至所述共享内存;
[0081]
第二数据传输模块44用于读取所述共享内存内的日志数据,将日志数据发送至缓存空间,对所述共享内存进行解锁,重新对所述共享内存进行加锁以继续发送日志数据至所述共享内存;
[0082]
日志合并模块45用于将一个预设时间周期内所有应用程序产生的日志数据根据所述时间标签进行排列合并成一个日志文件,将所述日志文件暂存在缓存空间;
[0083]
写入模块46用于将所述缓存空间内的全部所述日志文件写入存储器。
[0084]
关于基于嵌入式linux系统多程序日志处理装置40具体限定可以参见上文中对于基于嵌入式linux系统多程序日志处理方法的限定,在此不再赘述。
[0085]
请参阅图5,图5为本发明实施例的自动化终端50的结构示意图。如图5所示,该自动化终端50包括处理器51及和处理器51耦接的存储器52。存储器52存储有用于实现上述任一实施例所述的基于嵌入式linux系统多程序日志处理方法的程序指令。本发明实施例的自动化终端50使用嵌入式linux系统,自动化终端50内安装有多个应用程序。其采用多应用程序协作工作方式,即一台终端设备内有众多应用程序一起相互依赖、协同完成工作。
[0086]
其中,处理器51还可以称为cpu(central processing unit,中央处理单元)。处理器51可能是一种集成电路芯片,具有信号的处理能力。处理器51还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0087]
参阅图6,图6为本发明实施例的计算机存储介质的结构示意图。本发明实施例的计算机存储介质存储有能够实现上述所有方法的程序文件61,其中,该程序文件61可以以软件产品的形式存储在上述计算机存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的计算机存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
[0088]
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论
的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0089]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0090]
以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1