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

一种多用途微型日志系统及基于其的管理方法与流程

2022-07-09 22:27:06 来源:中国专利 TAG:


1.本发明涉及日志技术领域,尤其涉及一种多用途微型日志系统及基于其的管理方法。


背景技术:

2.日志作为记录软件运行的状态、过程等信息,输出到不同的介质中(例如:文件、数据库、控制台、显示屏、串口终端等),并进行显示和保存。其作用为软件调试、维护过程中的问题追溯、性能分析、系统监控、故障预警等功能,提供参考依据。而日志有规律输出,需要通过一套日志系统管理。可以说,日志系统的使用,几乎占用软件生命周期至少80%的时间。市面上成熟软件中都会集成日志系统,方便软件调试、维护。
3.目前的日志系统,从应用角度可以分为嵌入式日志系统和pc(personal computer,计算机)端日志系统两大类。其中的嵌入式日志系统是指在资源受限的微控制器(mcu)加入的日志系统。而pc端日志系统是指运行linux、windows、macos系统的平台中的日志系统。这两大类所用的日志系统有jdk log、log4c、log4cpp、log4j、google glog、syslog,这些日志系统应用在各种软件中。这些日志系统虽然功能强大,但接口不统一,不能在嵌入式日志系统和pc端日志系统两大类方面通用,即在不同处理器、不同的系统上往往不能运行不同的日志系统,从而给开发和维护带来学习、移植成本、管理成本。


技术实现要素:

4.本发明提供了一种多用途微型日志系统及基于其的管理方法,架构清晰简单,便于移植,具有微型、小巧、功能非常全面、支持多操作系统、高性能c/c 日志库的特点。
5.第一方面,本发明提供了一种多用途微型日志系统,该多用途微型日志系统主要包括接口层、内核层和后端层。其中,接口层用于与应用层连接,以给用户提供支持不同系统类型的api接口(applicationprogramminginterface,应用程序编程接口),并接收用户输入的日志信息。内核层与接口层连接,以接收接口层传递过来的日志信息,并按照预设配置要求对日志信息进行处理,生成日志帧。后端层与内核层连接,以接收内核层传递过来的日志帧,并将日志帧输出给已注册的不同类型的日志后端设备上。
6.在上述的方案中,采用接口层、内核层和后端层组成的三层架构设计,以流水线的处理方式处理日志信息,架构清晰简单,便于移植;使接口层的api接口支持不同系统类型,后端层能够将日志帧输出给已注册的不同类型的日志后端设备上,提供给用户的接口更少,集成速度更快,功能更加简单,并且适配多种系统;由于采用简单的三层架构设计,具有微型(最低rom《1k,ram《0.2k的资源占用)、小巧、功能非常全面、支持多操作系统、高性能c/c 日志库的特点,从而非常适合对资源敏感的软件项目,该软件项目诸如但不限于iot(internet of things,物联网)产品、可穿戴设备、智能家居等。
7.在一个具体的实施方式中,api接口为log_x(

)api接口;其中,log_x(

)api接口中的“x”为:表示不同级别日志的英文单词中的第一个字母大写;log_x(

)api接口中的
“…”
为日志内容。使接口层的api接口能够支持不同系统类型,从而能够给用户提供更少的接口。
8.在一个具体的实施方式中,内核层包含有:与接口层连接的格式化模块。格式化模块用于将接口层传递过来的日志信息处理为至少一帧设定格式日志。其中,每帧设定格式日志的总长度为n个字节。每帧设定格式日志依次包含有:级别字段、时间戳字段、标签字段和日志内容字段;其中,表示当前日志信息的级别日志的英文单词中的第一个字母大写写入级别字段;表示当前日志信息的时间戳写入时间戳字段;表示当前日志信息的来源模块的标签写入标签字段;当前日志信息的日志内容写入日志内容字段。通过在内核层不使用压缩模块,而是从源头设计简洁日志格式,集成格式化模块,使每个日志帧的长度设计成诸如128字节等,从日志字节数、日志帧数两个维度降低数据量,同时不缺失功能;使该日志系统支持设计微型、轻量级日记记录格式,且备份操作由文件系统自行完成,无需进行备份操作,减少接口数量及日志系统复杂度。
9.在一个具体的实施方式中,内核层还包含有与格式化模块连接的颜色字体处理模块。颜色字体处理模块用于按照预设规则,对每帧设定格式日志进行上色和字体风格处理,输出带颜色和字体风格的日志帧。目前的日志系统虽然功能强大,突出输出安全性和稳定性,但输出的日志没有颜色区分,字体没有风格,导致无法快速关注的重点信息。本技术通过在内核层还集成有颜色字体处理模块,采用一定的预设规则处理每个数据帧,将原本无色彩、无字体风格的日志添加色彩显示,大大提高日志可读性;在几十万行日志一眼找出想要的信息,通过对特定日志设置字体颜色及风格,快速定位,提高阅读效率;既能够明显减少日志大小,又同样到达彩色字体的日志,同时这种方式具有适用性更强的特点。相比log4c、zlog等c/c 日志库,通过增加上色处理、字体风格处理,即可输出缤纷多彩的日志,在不改变原有日志系统处理逻辑,只在日志最后输出时做处理,非常方便完成自定义颜色、字体风格的日志显示。
10.在一个具体的实施方式中,颜色字体处理模块按照预设规则,通过在每帧设定格式日志的头尾位置分别添加csi(control sequence introducer/initiator,控制序列引导器)格式头和csi格式尾,将每帧设定格式日志处理为带颜色和字体风格的日志帧。便于对每个数据帧进行上色处理和字体风格处理。
11.在一个具体的实施方式中,内核层还包含有与颜色字体处理模块连接的过滤器。过滤器包括:与颜色字体处理模块连接的级别过滤单元、标签过滤单元和关键词过滤单元;其中,级别过滤单元用于将不小于预设过滤级别的日志帧输出;标签过滤单元用于将包含有预设过滤标签的日志帧输出;关键词过滤单元用于将包含有预设过滤关键词的日志帧输出。通过在内核层还集成有过滤其模块,无需进行压缩,从源头设计简洁日志格式及过滤器,从日志字节数、日志条数两个维度降低数据量,同时不缺失功能。
12.在一个具体的实施方式中,内核层还包含有:均连接在过滤器及后端层之间的同步输出模块、异步输出模块及中断输出模块;且同步输出模块、异步输出模块和中断输出模块之间并联设置。其中,同步输出模块用于接收到每个日志帧之后,直接将该日志帧输出给后端日志设备;异步输出模块用于将接收的每个日志帧均缓存到缓存区,由日志输出线程取出缓存的所有日志帧后,输出给后端日志设备。通过在内核层中同时集成同步输出模块、异步输出模块和中断输出模块,且三个模块并联。系统异常中断时,日志系统采用异步和同
步模式特殊保护处理,保证日志安全输出。且在多线程多任务情况下,可以通过异步输出模块,先将日志缓存到缓存区,开启专门负责日志收集的线程取出日志,保证日志安全输出。
13.在一个具体的实施方式中,后端层中支持不同类型的操作系统,操作系统用于根据从内核层输出的每个日志帧的实际输出方式,调用设备资源,并将接收的每个日志帧输出给已注册的不同类型的日志后端设备上。通过使后端层支持诸如但不限于rtos(实时操作系统)、linux、windows、macos等的多种操作系统,也支持裸机平台,便于日志系统支持多操作系统的应用场景。
14.在一个具体的实施方式中,终端日志设备是指支持csi的软件或设备,便于日志系统能够适配所有支持c的系统平台。
15.第二方面,本发明还提供了一种基于上述任意一种多用途微型日志系统的管理方法,该管理方法包括:接口层给用户提供不同类型的api接口,并接收用户输入的日志信息;内核层接收接口层传递过来的日志信息,并按照预设配置要求对日志信息进行处理,生成日志帧;后端层接收内核层传递过来的日志帧,并将日志帧输出给已注册的不同类型的日志后端设备上。
16.在上述的方案中,采用接口层、内核层和后端层组成的三层架构设计,以流水线的处理方式处理日志信息,架构清晰简单,便于移植;使接口层的api接口支持不同系统类型,后端层能够将日志帧输出给已注册的不同类型的日志后端设备上,提供给用户的接口更少,集成速度更快,功能更加简单,并且适配多种系统;由于采用简单的三层架构设计,具有微型(最低rom《1k,ram《0.2k的资源占用)、小巧、功能非常全面、支持多操作系统、高性能c/c 日志库的特点,从而非常适合对资源敏感的软件项目,该软件项目诸如但不限于iot产品、可穿戴设备、智能家居等。
附图说明
17.图1为本发明实施例提供的一种多用途微型日志系统的架构示意图;
18.图2为本发明实施例提供的一种设定格式日志的字段示意图;
19.图3为本发明实施例提供的一种颜色字体处理模块处理流程图;
20.图4为本发明实施例提供的一种经颜色字体处理模块处理后的日志帧的字段示意图;
21.图5为本发明实施例提供的一种没有经颜色字体处理模块处理后的日志帧图;
22.图6为本发明实施例提供的一种经颜色字体处理模块处理后的日志帧图;
23.图7为本发明实施例提供的同步输出模式和异步输出模式的输出流程对比图。
24.附图标记:
25.10-接口层 11-log_x(

) api接口 20-内核层
26.21-格式化模块 22-颜色字体处理模块 23-过滤器
27.24-同步输出模块 25-异步输出模块 26-中断输出模块
28.30-后端层 31-操作系统 40-日志后端设备
具体实施方式
29.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.为了方便理解本发明实施例提供的多用途微型日志系统,下面首先说明一下本发明实施例提供的多用途微型日志系统的应用场景,该多用途微型日志系统应用于收集并输出日志的各种系统中。下面结合附图对该多用途微型日志系统进行详细的叙述。
31.参考图1,本发明实施例提供的多用途微型日志系统主要包括接口层10、内核层20和后端层30。其中,接口层10用于与应用层连接,以给用户提供支持不同系统类型的api接口,并接收用户输入的日志信息。内核层20与接口层10连接,以接收接口层10传递过来的日志信息,并按照预设配置要求对日志信息进行处理,生成日志帧。后端层30与内核层20连接,以接收内核层20传递过来的日志帧,并将日志帧输出给已注册的不同类型的日志后端设备40上。
32.在上述的方案中,采用接口层10、内核层20和后端层30组成的三层架构设计,以流水线的处理方式处理日志信息,架构清晰简单,便于移植;使接口层10的api接口支持不同系统类型,其中不同系统是指多种操作系统包括但不限于rtos、linux、windows、macos,后端层30能够将日志帧输出给已注册的不同类型的日志后端设备40上,提供给用户的接口更少,集成速度更快,功能更加简单,并且适配多种系统;由于采用简单的三层架构设计,具有超微型(最低rom《1k,ram《0.2k的资源占用)、小巧、功能非常全面、支持多操作系统31、高性能c/c 日志库的特点,从而非常适合对资源敏感的软件项目,该软件项目诸如但不限于iot产品、可穿戴设备、智能家居等。下面结合附图对上述各个模块进行详细的介绍。
33.在设置接口层10时,接口层10作为与应用层最近的一层,能够给用户提供支持不同系统类型的api接口,并接收用户输入的日志信息,方便用户在不同的场景中使用该日志系统。在设置api接口时,参考图1,api接口具体可以为log_x(

)api接口11。其中,log_x(

)api接口11中的“x”为:表示不同级别日志的英文单词中的第一个字母大写;log_x(

)api接口11中的
“…”
为日志内容。使接口层10的api接口能够支持不同系统类型,从而能够给用户提供更少的接口。关于不同的x所对应的级别日志可以参见下表:
34.表1-不同的x所对应的级别日志
35.api描述log_a(...)断言级别日志log_e(...)错误级别日志log_w(...)警告级别日志log_i(...)提示级别日志log_d(...)调试级别日志log_raw(...)输出原始日志log_hex(name,width,buf,size)输出16进制格式数据到日志
36.上述表中的“a”是断言(assert)的第一个字母大写;上述表中的“e”是错误(error)的第一个字母大写;上述表中的“w”是警告(warn)的第一个字母大写;上述表中的“i”是信息(info)的第一个字母大写;上述表中的“d”是调试(debug)的第一个字母大写。另外,参考表1,上述的“x”还可以为raw、hex等首字母大写或全拼,以表示对应的级别日志。
37.在设置内核层20时,参考图1,内核层20与接口层10连接,以接收接口层10传递过来的日志信息,并按照预设配置要求对日志信息进行处理,生成日志帧。在一个实施例中,参考图1及图2,可以在内核层20中包含有与接口层10连接的格式化模块21。格式化模块21用于将接口层10传递过来的日志信息处理为至少一帧设定格式日志。其中,每帧设定格式日志的总长度为n个字节,该n具体可以等于64、128、256、512等。参考图2,每帧设定格式日志依次包含有:级别字段、时间戳字段、标签字段和日志内容字段。其中,表示当前日志信息的级别日志的英文单词中的第一个字母大写,写入级别字段。表示当前日志信息的时间戳,写入时间戳字段。表示当前日志信息的来源模块的标签,写入标签字段,标签用于区分那个模块的日志信息。当前日志信息的具体日志内容,写入日志内容字段。由于在内核层20并未使用压缩模块,而是从源头设计简洁日志格式,集成格式化模块21,使每个日志帧的长度设计成诸如128字节等,从日志字节数、日志帧数两个维度降低数据量,同时不缺失原有的功能;使该日志系统支持设计微型、轻量级日记记录格式,且备份操作由文件系统自行完成,无需进行备份操作,减少接口数量及日志系统复杂度。
38.另外,在具体给不同的级别日志进行优先级排序时,可以给不同的级别日志定义不同的级别数字,且不同的级别数字代表不同的优先级,作为一种示例,可以是级别数字越小,表示优先级越大;级别数字越大,表示优先级越小。例如,只要5个级别日志参与优先级排序时,级别数字为0表示优先级最大,级别数字4表示优先级最低。具体可以采用如下表2示出的级别日志优先级排序方式:
39.表2-级别日志优先级排序
40.级别数字级别日志标识描述0[a]断言(assert)1[e]错误(error)2[w]警告(warn)3[i]信息(info)4[d]调试(debug)
[0041]
另外,继续参考图1,还可以在内核层20中设置有与格式化模块21连接的颜色字体处理模块22。颜色字体处理模块22用于按照预设规则,对每帧设定格式日志进行上色和字体风格处理,输出带颜色和字体风格的日志帧。目前的日志系统虽然功能强大,突出输出安全性和稳定性,但输出的日志没有颜色区分,没有字体风格,导致无法快速关注重点信息。本技术通过在内核层20还集成有颜色字体处理模块22,采用一定的预设规则处理每个数据帧,将原本无色彩、无字体风格的日志添加色彩显示,大大提高日志可读性;通过对特定日志设置字体颜色及风格,可以在几十万行日志中一眼找出想要的信息,从而快速定位,提高阅读效率;既能够明显减少日志大小,又同样得到具有彩色字体的日志,同时这种方式具有适用性更强的特点。相比log4c、zlog等c/c 日志库,通过增加上色处理、字体风格处理,即可输出缤纷多彩的日志,在不改变原有日志系统处理逻辑,只在日志最后输出时做处理,非常方便完成自定义颜色、字体风格的日志显示,同时,相较于html格式的日式输出方法,本技术通过一定规则输出日志,明显减小了日志的大小,在同样实现彩色字体的目的下,具有更强的适应性。
[0042]
在具体设置颜色字体处理模块22时,参考图1及图3,颜色字体处理模块22可以按
12:00:01wifi init ok.”加入csi格式头和csi格式尾,组成“\033[4;5;31me 12:00:01wifi init ok.\033[0m”后的颜色及字体风格的显示效果如图6所示。其中的csi格式头为“\033[4;5;31m”。csi格式尾为“\033[0m”。结合表3及表4中的定义方式,其中的,“\033[”表示csi起始标志;“4”表示加下划线;“5”表示闪烁显示;“31”表示前景色加红色;“m”表示结束符;“0”表示关闭所有格式,进行还原。上述没有背景设置的参数,即背景没有设置,日志背景色为默认背景色。
[0051]
继续参考图1,还可以在内核层20中设置有与颜色字体处理模块22连接的过滤器23。过滤器23可以包括:与颜色字体处理模块22连接的级别过滤单元、标签过滤单元和关键词过滤单元。其中,级别过滤单元用于将不小于预设过滤级别的日志帧输出,即级别过滤单元进行级别过滤。在一种实施方式中,可以默认过滤级别为4,当然用户可以任意预设过滤级别。在预设过滤级别之后,优先级高于预设过滤级别的日志帧将会被输出,而优先级低于预设过滤级别的日志帧将不会输出。例如:预设当前的过滤级别是:优先级为2(警告),则只会输出优先级别为警告、错误、断言的日志。具体的api接口命令为:void set_filter_lvl(uint8_t level)。
[0052]
其中的标签过滤单元用于将包含有预设过滤标签的日志帧输出,即标签过滤单元进行标签过滤。在一种实施方式中,可以默认预设过滤标签为空字符串(""),即不过滤。当前输出日志帧的标签会与预设过滤标签做字符串匹配。如果当前输出的日志帧的标签包含预设过滤标签,则输出该日志帧;否则,不输出。例如:可以预设过滤标签为wifi,则日志系统中包含wifi字样标签的(wifi.bsp、wifi.protocol、setting.wifi)的日志帧都会被输出,其他标签则不输出。具体的api接口命令可以为:void set_filter_tag(const char*tag)。
[0053]
其中的关键词过滤单元用于将包含有预设过滤关键词的日志帧输出,即关键词过滤单元进行关键词过滤。在一种实施方式中,可以默认预设过滤关键词为空字符串(""),即不过滤。检索当前输出的日志帧中是否包含该预设过滤关键词,包含则允许输出,不包含则不输出。具体的api接口命令可以为:void set_filter_kw(const char*keyword)。
[0054]
需要解释的是,上述级别过滤、标签过滤及关键词过滤的三种方式可以进行混合过滤,即级别过滤单元、标签过滤单元和关键词过滤单元对同一个输出的日志帧都进行过滤,只有符合所有的预设过滤要求,才能够输出,否则不输出。对应的api接口命令可以为:void set_filter(uint8_t level,const char*tag,const char*keyword)。上述方式,通过在内核层20还集成有过滤其模块,无需进行压缩,从源头设计简洁日志格式及过滤器23,从日志字节数、日志条数两个维度降低数据量,同时不缺失功能。
[0055]
此外,参考图1,还可以在内核层20中设置有:均连接在过滤器23及后端层30之间的同步输出模块24、异步输出模块25及中断输出模块26;且同步输出模块24、异步输出模块25和中断输出模块26之间并联设置。即同步输出模块24、异步输出模块25及中断输出模块26均设置在内核层20内,每个输出模块均与过滤器23连接,同时还与后端层30连接,以将从过滤器23输出的日志帧输出给后端层30。
[0056]
参考图7,其中的同步输出模块24用于接收到每个日志帧之后,直接将该日志帧输出给后端日志设备。即同步输出模块24可以直接将其所接收的日志帧输出到后端层30的日志后端设备40上,与直接打印类似。
[0057]
继续参考图7,其中的异步输出模块25用于将接收的每个日志帧均缓存到缓存区,由日志输出线程取出缓存的所有日志帧后,输出给后端日志设备。即异步输出模块25用于在用户在调用日志输出的api接口时,会将其所接收的每个日志帧先缓存到缓存区中,之后会由专门负责日志输出的线程取出日志,然后输出到后端层30的日志后端设备40上。上述的异步模式和同步模式针对用户而言,在日志api接口使用上是没有差异的,因为在底层处理上会有区分。但是异步模式相比同步模式,具有如下的优点:
[0058]
a)日志输出时不会阻塞住当前线程,再加上有些后端输出速率低,所以使用同步输出模式可能影响当前线程的时序,而异步模式则不存在该问题;
[0059]
b)由于每个使用日志的线程省略了后端输出的动作,所以这些线程的堆栈开销可能也会减少,从这个角度看,异步模式可以降低整个系统的资源占用;
[0060]
c)同步模式下的中断日志只能输出到后端层30的终端上,而异步模式下中断日志可以输出到所有后端层30的所有日志后端设备40上,并不限于终端上。
[0061]
上述方式,通过在内核层20中同时集成同步输出模块24、异步输出模块25和中断输出模块26,且三个模块并联。系统异常中断时,日志系统采用异步和同步模式特殊保护处理,保证日志安全输出。且在多线程多任务情况下,可以通过异步输出模块25,先将日志缓存到缓存区,开启专门负责日志收集的线程取出日志,保证日志安全输出。
[0062]
在设置后端层30时,参考图1,后端层30与内核层20连接,以接收内核层20传递过来的日志帧,并将日志帧输出给已注册的不同类型的日志后端设备40上。如图1所示,可以使后端层30中支持不同类型的操作系统31,该操作系统31可以为诸如但不限于rtos、linux、windows、macos等多种操作系统31,操作系统31用于根据从内核层20输出的每个日志帧的实际输出方式,调用设备资源,并将接收的每个日志帧输出给已注册的不同类型的日志后端设备40上。其中的日志后端设备40指的是最底层的后端设备,其实就是日志的输出方式,可以是串口、文件、网络、终端、flash中的任意一种设备,给用户带来灵活多用途输出方式。上述的日志信息及日志帧可以采用标准c编写,能够适配所有支持c的系统平台。终端日志设备可以是指支持csi的软件或设备,便于日志系统能够适配所有支持c的系统平台。上述设置方式,通过使后端层30支持诸如但不限于rtos、linux、windows、macos等的多种操作系统31,也支持裸机平台,便于日志系统支持多操作系统31的应用场景。
[0063]
上述示出的各种实施方式,通过采用接口层10、内核层20和后端层30组成的三层架构设计,以流水线的处理方式处理日志信息,架构清晰简单,便于移植;使接口层10的api接口支持不同系统类型,后端层30能够将日志帧输出给已注册的不同类型的日志后端设备40上,提供给用户的接口更少,集成速度更快,功能更加简单,并且适配多种系统;由于采用简单的三层架构设计,具有微型(最低rom《1k,ram《0.2k的资源占用)、小巧、功能非常全面、支持多操作系统31、高性能c/c 日志库的特点,从而非常适合对资源敏感的软件项目,该软件项目诸如但不限于iot产品、可穿戴设备、智能家居等。
[0064]
另外,本发明实施例还提供了一种基于上述任意一种多用途微型日志系统的管理方法,参考图1,该管理方法包括:接口层10给用户提供不同类型的api接口,并接收用户输入的日志信息;内核层20接收接口层10传递过来的日志信息,并按照预设配置要求对日志信息进行处理,生成日志帧;后端层30接收内核层20传递过来的日志帧,并将日志帧输出给已注册的不同类型的日志后端设备40上。采用接口层10、内核层20和后端层30组成的三层
架构设计,以流水线的处理方式处理日志信息,架构清晰简单,便于移植;使接口层10的api接口支持不同系统类型,后端层30能够将日志帧输出给已注册的不同类型的日志后端设备40上,提供给用户的接口更少,集成速度更快,功能更加简单,并且适配多种系统;由于采用简单的三层架构设计,具有微型(最低rom《1k,ram《0.2k的资源占用)、小巧、功能非常全面、支持多操作系统31、高性能c/c 日志库的特点,从而非常适合对资源敏感的软件项目,该软件项目诸如但不限于iot产品、可穿戴设备、智能家居等。
[0065]
应当理解的是,在多用途微型日志系统中还包含有如上所述的其他功能模块时,该管理方法同样可以包含有上述功能模块所对应执行的方法。具体的执行方法参考前述多用途微型日志系统部分的描述,在此不再赘述。
[0066]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献