CN103927251B - 一种嵌入式系统的日志管理方法 - Google Patents
一种嵌入式系统的日志管理方法 Download PDFInfo
- Publication number
- CN103927251B CN103927251B CN201410100327.6A CN201410100327A CN103927251B CN 103927251 B CN103927251 B CN 103927251B CN 201410100327 A CN201410100327 A CN 201410100327A CN 103927251 B CN103927251 B CN 103927251B
- Authority
- CN
- China
- Prior art keywords
- record
- recording area
- log recording
- log
- daily record
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种嵌入式系统的日志管理方法,涉及嵌入式系统的调试诊断技术领域,包括步骤:S1.从系统内存中获取日志内存块,记录日志内存块的起始地址、占用内存空间的总大小;S2.将日志内存块分为等大且连续的日志记录区,每个日志记录区分为不同的分区,每个日志记录区还包含一个总控制头,每个分区还包括一个分区控制头;S3.按照上述步骤为每种类型的日志分配日志记录区;S4.根据日志记录区的起始地址和当前日志记录位置,获取日志记录区当前分区中用于记录日志信息的内存首地址,将需要记录的日志信息写入该内存首地址所在区域。本发明减少了对存储介质的读写,提高了日志记录信息的高效管理,实现系统的快速、准确的诊断和定位。
Description
技术领域
本发明涉及嵌入式系统的调试诊断技术领域,具体来讲是一种嵌入式系统的日志管理方法。
背景技术
日志为嵌入式系统诊断提供重要依据,详细的日志记录为监视、跟踪、定位或管理系统运行提供重要的线索,特别是针对一些BUG不易再现的嵌入式设备的跟踪和定位,提供有力的依据。
目前嵌入式系统通用的日志管理,是将系统所有历史和当前的任务发送的日志记录信息,通过申请内存来保存,并拷贝该日志记录信息,保存在一个位于存储介质中的日志文件内。当调试人员需要查看日志记录信息时,获取日志文件内所有的日志记录信息。这种方法针对日志记录信息的读写,都需要对存储介质进行一次读写,实现效率低;且读取到的所有日志记录信息,庞大而无序,无法区分日志是属于当前系统运行时的日志,还是系统历史的日志记录信息,难于实现系统的快速、准确的诊断和定位。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种嵌入式系统的日志管理方法,减少了对存储介质的读写,提高了日志记录信息的高效管理,实现系统的快速、准确的诊断和定位。
为达到以上目的,本发明采取一种嵌入式系统的日志管理方法,包括步骤:S1.从系统内存中获取一块日志内存块,记录所述日志内存块的起始地址、占用内存空间的总大小;S2.将所述日志内存块分为等大且连续的日志记录区,每个日志记录区又分为不同的分区,每个分区用于存储同一层的历史记录日志信息,每个日志记录区还包含一个描述该日志记录区的总控制头,每个分区还包括一个分区控制头;S3.按照上述步骤为每种类型的日志分配日志记录区;S4.根据日志记录区的起始地址和当前日志记录位置,获取所述日志记录区当前分区中用于记录日志信息的内存首地址,将需要记录的日志信息写入该内存首地址所在区域。
在上述技术方案的基础上,当嵌入式系统复位或日志记录区有改动时,将所述日志内存块的日志记录区中所有二进制数据保存到存储介质。
在上述技术方案的基础上,所述S3中为某种类型的日志分配日志记录区,首先根据输入的分区数、记录数和记录长度,计算该类型日志占用内存的大小,在没有超过日志内存块内存的情况下,获取此次申请的日志记录区的起始地址,重新设置已使用的日志内存块大小,新创建日志记录区的内存首地址,初始化该日志记录区的总控制头以及该记录区内的各分区控制头,获取日志记录区当前分区,并初始化该分区。
在上述技术方案的基础上,根据所述日志占用内存的大小+已使用日志记录区的内存大小,与日志内存块的总大小进行比较,若小于日志内存块的总大小,获取此次申请的日志记录区的起始地址,并且作为该日志类型的标识ID。
在上述技术方案的基础上,所述日志记录区的内存首地址,通过日志记录区起始地址+日志记录区已使用的地址获取到。
在上述技术方案的基础上,所述总控制头记录其所在日志记录区的有效标识、CRC校验值、各分区和该日志记录区创建成功后不再改变的值。
在上述技术方案的基础上,根据不同的日志类型,分配与日志类型对应的日志记录区,并将所有该类型的日志保存在该日志记录区内的当前分区。
在上述技术方案的基础上,当前分区记录已满时,若有新的记录需要保存,有两种记录方式:一种是采用滚动覆盖最原始的记录,从而保存新的记录;另一种是放弃此次新的记录,维持原有的记录。
在上述技术方案的基础上,当需要查看某类型日志的详细记录信息时,首先获取该类型日志对应的分区的有效记录总数,遍历该类型日志对应的分区,获取所有的记录数据。
本发明的有益效果在于:
1、系统在初始化的时候一次性为日志记录分配整块且连续的日志内存块,且如果当前分区没有记录数据时,复位后重复将该分区设置为当前分区,减少了系统内存的浪费。新日志记录区内存地址,通过日志记录区起始地址+日志记录区已使用的地址获取到,提高了日志记录区的内存分配效率。
2、只有在嵌入式系统复位或定时检测到日志记录区有改动时,将所述日志内存块的日志记录区中所有二进制数据保存到存储介质,例如FLASH、CF卡、远程调试主机的硬盘内,减少了对存储介质的读写。
3、本发明提供当前日志和历史日志的快速查看方式,例如:可以根据调试人员的要求查看不同历史时期的具体日志,为系统的诊断提供更加清晰、系统性的信息;日志记录的存储地址可以通过简单的计算获取,日志的记录不需要任务发送日志信息,也不需要为每条日志申请内存、拷贝等复杂操作,提高了日志记录的读写效率。
附图说明
图1为本发明嵌入式系统的日志内存块的示意图;
图2为创建新日志记录区的流程图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
本发明嵌入式系统的日志管理方法,包括步骤:
S1.从系统内存中获取一块日志内存块,即从系统内存中申请一整块连续的内存块,用于存储系统的日志信息。记录该日志内存块起始地址、占用内存空间的总大小,初始化已使用的日志内存大小为0。如图1所示,为本发明嵌入式系统的日志内存块示意图。
S2.将所述日志内存块分为等大且连续的日志记录区,每一个日志记录区用于存储相同类型的日志记录,每个日志记录区还包含一个描述该日志记录区的总控制头。每个日志记录区又分为不同的分区,每个分区用于存储同一层的历史记录日志信息,每个分区还包括一个分区控制头,详细的日志信息存储在不同的分区中。
S3.按照上述步骤为每种类型的日志分配日志记录区。当开发人员需要记录某类型的日志时,例如需要保存系统消息处理时间过长的相关记录,首先需要为消息处理时间过长类型的日志,从系统日志内存块中申请内存,即创建日志记录区,且保存申请到的日志类型的标识ID。所述日志记录区的内存首地址,通过日志记录区起始地址+日志记录区已使用的地址获取到。
S4.记录特定类型的日志,即向指定类型的日志记录区内写该类型的日志信息。先要根据日志记录区的起始地址和当前日志记录位置,在发生指定类型日志的代码处,根据记录长度、日志记录区的首地址、总控制头的大小等值,通过简单的计算,获取所述日志记录区当前分区中用于记录日志信息的内存首地址,将需要记录的日志信息写入该内存首地址所在区域。当日志记录区的分区已满且记录方式为滚动覆盖时,则删除最原始的日志信息,保存此次新产生的日志信息;当日志记录区的分区已满,且记录方式为非滚动覆盖时,则放弃保存此次新产生的日志信息。
如图2所示,为步骤S3中创建新日志记录区的具体流程:
S31.开发人员需要输入所要记录的类型日志的名称、分区数、每个分区存储的记录总数(记录数),每条记录的长度(记录长度)以及记录的方式。根据输入的分区数、记录数和记录长度,计算该类型日志占用内存的大小。如图1所示,分区数表示保存历史记录的层数,若选择分区数为3,则系统最多保存复位2次内所有历史记录,其中分区0表示当前记录分区,分区1表示最近一次系统复位前使用的分区,分区2表示上上一次复位前使用的分区,依此类推。记录方式是指当前分区记录已满时,若有新的记录需要保存时,有两种记录方式:一种是系统采用滚动覆盖最原始的记录,从而保存新的记录;另一种是放弃此次新的记录,维持原有的记录。
S32.判断申请的日志内存是否越界。根据步骤S31中获得的日志占用内存总大小+日志内存块中已使用的日志内存大小,与日志内存块的总大小进行比较,若大于日志内存块的大小,则为越界,直接结束。若小于日志内存块的总大小,则为没有越界,进入S33。
S33.若有日志内存块中有足够的日志内存空间使用,则根据日志内存块的起始地址、已使用的日志记录区的内存大小、需要申请的日志内存大小,获取此次申请的日志记录区的的起始地址,并且作为该日志类型的标识ID。
S34.重新设置已使用的日志内存块大小,为原有已使用的日志内存块大小+新创建日志记录区的大小。
S35.判断申请到的日志记录区是否有效,若否,即该日志记录区是第一次被创建还未使用,进入S36;若是,进入S37。
S36.初始化该日志记录区的总控制头以及该记录区内的各分区控制头,即保存申请到的日志记录区的相关信息,其中设置总控制头包括该日志记录区的有效标识、CRC校验值、名称、起始地址、日志记录数据的偏移地址、分区数、记录数、记录长度、控制头占用空间的长度、用户记录数据的总长度、有效分区数、分区队列头、尾指针等信息。日志记录区中各分区控制头设置分区有效标识、记录方式、该分区的记录头、尾指针、有效记录数等。
S37.获取日志记录区当前分区,若上次复位前未记录任何信息,则当前分区为上次复位前的当前分区。
S38.初始化当前分区,获取该日志记录区的CRC校验值并保存,获取当前分区标识,方便频繁的引用。
当需要获取指定类型的日志记录时,即获取指定类型的日志内存块中的某条记录的详细信息。根据指定的日志记录区首地址、分区号、控制头大小,通过简单的计算,获取指定分区中记录数据的基地址;根据记录编号、记录长度和基地址,通过简单的计算,获取指定记录的起始地址;打印该记录的内容。如果要查看当前分区内所有记录,则需要根据当前分区记录数据的基地址、当前分区有效记录数和记录长度,遍历当前分区所有的记录数据。若要查看复位前的历史日志信息,则需要根据对应分区记录数据的基地址,然后根据该分区内有效记录数,遍历该分区内有所有日志记录数据。
当嵌入式系统复位或定时检测日志记录区有改动时,将嵌入式系统中日志内存块中所有二进制数据保存到存储介质,例如FLASH、CF卡、远程调试主机的硬盘内,为嵌入式系统的离线诊断提供重要信息。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (8)
1.一种嵌入式系统的日志管理方法,其特征在于,包括步骤:
S1.从系统内存中获取一块日志内存块,记录所述日志内存块的起始地址、占用内存空间的总大小;
S2.将所述日志内存块分为等大且连续的日志记录区,每个日志记录区又分为不同的分区,每个分区用于存储同一层的历史记录日志信息,每个日志记录区还包含一个描述该日志记录区的总控制头,每个分区还包括一个分区控制头;
S3.按照上述步骤为每种类型的日志分配日志记录区:首先根据输入的分区数、记录数和记录长度,计算该类型日志占用内存的大小,在没有超过日志内存块内存的情况下,获取此次申请的日志记录区的起始地址,重新设置已使用的日志内存块大小,新创建日志记录区的内存首地址,初始化该日志记录区的总控制头以及该记录区内的各分区控制头,获取日志记录区当前分区,并初始化该分区;
S4.根据日志记录区的起始地址和当前日志记录位置,获取所述日志记录区当前分区中用于记录日志信息的内存首地址,将需要记录的日志信息写入该内存首地址所在区域。
2.如权利要求1所述的嵌入式系统的日志管理方法,其特征在于:当嵌入式系统复位或日志记录区有改动时,将所述日志内存块的日志记录区中所有二进制数据保存到存储介质。
3.如权利要求1所述的嵌入式系统的日志管理方法,其特征在于:根据所述日志占用内存的大小+已使用日志记录区的内存大小,与日志内存块的总大小进行比较,若小于日志内存块的总大小,获取此次申请的日志记录区的起始地址,并且作为该日志类型的标识ID。
4.如权利要求1所述的嵌入式系统的日志管理方法,其特征在于:所述日志记录区的内存首地址,通过日志记录区起始地址+日志记录区已使用的地址获取到。
5.如权利要求1所述的嵌入式系统的日志管理方法,其特征在于:所述总控制头记录其所在日志记录区的有效标识、CRC校验值、各分区和该日志记录区创建成功后不再改变的值。
6.如权利要求1所述的嵌入式系统的日志管理方法,其特征在于:根据不同的日志类型,分配与日志类型对应的日志记录区,并将所有该类型的日志保存在该日志记录区内的当前分区。
7.如权利要求6所述的嵌入式系统的日志管理方法,其特征在于:当前分区记录已满时,若有新的记录需要保存,有两种记录方式:一种是采用滚动覆盖最原始的记录,从而保存新的记录;另一种是放弃此次新的记录,维持原有的记录。
8.如权利要求1所述的嵌入式系统的日志管理方法,其特征在于:当需要查看某类型日志的详细记录信息时,首先获取该类型日志对应的分区的有效记录总数,遍历该类型日志对应的分区,获取所有的记录数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410100327.6A CN103927251B (zh) | 2014-03-18 | 2014-03-18 | 一种嵌入式系统的日志管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410100327.6A CN103927251B (zh) | 2014-03-18 | 2014-03-18 | 一种嵌入式系统的日志管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103927251A CN103927251A (zh) | 2014-07-16 |
CN103927251B true CN103927251B (zh) | 2017-02-01 |
Family
ID=51145476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410100327.6A Active CN103927251B (zh) | 2014-03-18 | 2014-03-18 | 一种嵌入式系统的日志管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103927251B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107250992B (zh) * | 2015-11-13 | 2020-08-07 | 华为技术有限公司 | 一种文件写入方法及文件服务器 |
CN105700992B (zh) * | 2016-02-26 | 2017-11-21 | 湖南国科微电子股份有限公司 | 一种嵌入式系统日志记录方法及日志记录系统 |
CN106445837B (zh) * | 2016-10-12 | 2020-01-17 | 许继集团有限公司 | 一种嵌入式装置历史记录存储与加载管理实现方法及装置 |
CN107977265A (zh) * | 2016-10-25 | 2018-05-01 | 中兴通讯股份有限公司 | 内存初始化方法、装置和内存分配方法、装置 |
CN108089971B (zh) * | 2017-11-27 | 2021-03-16 | 上海华元创信软件有限公司 | 基于嵌入式实时系统的日志服务方法和系统 |
CN109446174A (zh) * | 2018-10-30 | 2019-03-08 | 东软集团股份有限公司 | 日志数据记录方法、装置及计算机可读存储介质 |
CN109739738A (zh) * | 2018-12-26 | 2019-05-10 | 深圳市网心科技有限公司 | 基于html5的事件日志管理方法、系统及相关装置 |
CN110263004A (zh) * | 2019-05-08 | 2019-09-20 | 北京字节跳动网络技术有限公司 | 日志记录方法、装置、电子设备和存储介质 |
CN110825587A (zh) * | 2019-11-01 | 2020-02-21 | 浙江互灵科技有限公司 | 基于mcu的简易日志系统及日志管理方法 |
CN111078515B (zh) * | 2019-11-25 | 2024-02-13 | 深圳忆联信息系统有限公司 | Ssd分层日志记录方法、装置、计算机设备及存储介质 |
CN111061614B (zh) * | 2019-12-23 | 2023-07-04 | 无锡中感微电子股份有限公司 | 一种内存实时监控处理方法和系统 |
CN113660103A (zh) * | 2020-05-12 | 2021-11-16 | 大唐移动通信设备有限公司 | 一种启动信息记录方法、装置、电子设备及存储介质 |
CN112231288B (zh) * | 2020-09-30 | 2024-07-02 | 北京金山云网络技术有限公司 | 日志存储方法和装置、介质 |
CN112417218A (zh) * | 2020-11-10 | 2021-02-26 | 上海商米科技集团股份有限公司 | 一种嵌入式设备可变格式日志记录方法 |
CN112712610B (zh) * | 2020-12-30 | 2024-02-27 | 深圳市元征科技股份有限公司 | 车辆诊断日志处理方法、装置、终端设备及可读存储介质 |
CN113706738B (zh) * | 2021-09-01 | 2023-06-06 | 陕西航空电气有限责任公司 | 一种航空交流起动控制器数据记录方法及系统 |
CN113722188A (zh) * | 2021-09-15 | 2021-11-30 | 京东科技信息技术有限公司 | 日志服务系统及日志记录的处理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1684041A (zh) * | 2004-04-14 | 2005-10-19 | 华为技术有限公司 | 随机存储器的数据保存方法 |
CN101459557A (zh) * | 2008-11-29 | 2009-06-17 | 成都市华为赛门铁克科技有限公司 | 一种安全日志集中存储方法及装置 |
CN102158349A (zh) * | 2011-02-09 | 2011-08-17 | 中兴通讯股份有限公司 | 一种日志管理装置及方法 |
CN102637142A (zh) * | 2012-04-13 | 2012-08-15 | 浪潮(北京)电子信息产业有限公司 | 一种实现日志管理的计算机系统及其方法 |
CN102654864A (zh) * | 2011-03-02 | 2012-09-05 | 华北计算机系统工程研究所 | 一种面向实时数据库的独立透明型安全审计保护的方法 |
CN103197988A (zh) * | 2012-01-05 | 2013-07-10 | 中国移动通信集团湖南有限公司 | 一种数据备份、恢复的方法、设备和数据库系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5138322B2 (ja) * | 2007-09-14 | 2013-02-06 | 東京エレクトロン株式会社 | 処理システムの制御装置、処理システムの制御方法および制御プログラムを記憶した記憶媒体 |
-
2014
- 2014-03-18 CN CN201410100327.6A patent/CN103927251B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1684041A (zh) * | 2004-04-14 | 2005-10-19 | 华为技术有限公司 | 随机存储器的数据保存方法 |
CN101459557A (zh) * | 2008-11-29 | 2009-06-17 | 成都市华为赛门铁克科技有限公司 | 一种安全日志集中存储方法及装置 |
CN102158349A (zh) * | 2011-02-09 | 2011-08-17 | 中兴通讯股份有限公司 | 一种日志管理装置及方法 |
CN102654864A (zh) * | 2011-03-02 | 2012-09-05 | 华北计算机系统工程研究所 | 一种面向实时数据库的独立透明型安全审计保护的方法 |
CN103197988A (zh) * | 2012-01-05 | 2013-07-10 | 中国移动通信集团湖南有限公司 | 一种数据备份、恢复的方法、设备和数据库系统 |
CN102637142A (zh) * | 2012-04-13 | 2012-08-15 | 浪潮(北京)电子信息产业有限公司 | 一种实现日志管理的计算机系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103927251A (zh) | 2014-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103927251B (zh) | 一种嵌入式系统的日志管理方法 | |
CN106548789B (zh) | 用于操作叠瓦式磁记录设备的方法和装置 | |
CN104011683B (zh) | 虚拟机管理方法以及虚拟机管理装置 | |
CN104025054B (zh) | 虚拟环境中的动态存储分层 | |
US8521986B2 (en) | Allocating storage memory based on future file size or use estimates | |
CN102981944B (zh) | 一种基于文件系统的日志存储方法 | |
CN106354431A (zh) | 一种数据存储方法及装置 | |
US10908833B2 (en) | Data migration method for a storage system after expansion and storage system | |
CN103425663B (zh) | 嵌入式系统数据库创建表、存记录、删记录的方法和装置 | |
CN102147709A (zh) | 基于服务质量的存储分层与迁移技术的系统和方法 | |
CN106164884A (zh) | 具有嵌入式软件的数据存储设备 | |
JP2006099763A5 (zh) | ||
CN103116473A (zh) | 使用盘驱动器模拟模型来对盘i/o扼流 | |
CN107643880A (zh) | 基于分布式文件系统的文件数据迁移的方法及装置 | |
CN104516471A (zh) | 一种管理存储器系统的电源的方法和装置 | |
CN104969181B (zh) | 用于损坏的驱动器变量记录的修复系统、方法及存储设备 | |
CN104620230A (zh) | 管理存储器的方法 | |
CN108399050B (zh) | 一种数据处理方法及装置 | |
CN109428913A (zh) | 一种存储扩容方法及装置 | |
CN104281717B (zh) | 一种建立海量id映射关系的方法 | |
CN104461388B (zh) | 一种存储阵列配置保存及仲裁方法 | |
CN103092849A (zh) | 文件系统簇管理方法 | |
CN104166627B (zh) | 一种基于单片机的nand‑flash写操作方法 | |
CN107506466A (zh) | 一种小文件存储方法及系统 | |
CN101441596A (zh) | 提高闪存介质读写速度的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |