CN104734881A - 一种日志和异常探针的实现方法 - Google Patents
一种日志和异常探针的实现方法 Download PDFInfo
- Publication number
- CN104734881A CN104734881A CN201410766410.7A CN201410766410A CN104734881A CN 104734881 A CN104734881 A CN 104734881A CN 201410766410 A CN201410766410 A CN 201410766410A CN 104734881 A CN104734881 A CN 104734881A
- Authority
- CN
- China
- Prior art keywords
- file
- daily record
- abnormal
- event
- grand
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种日志和异常探针的实现方法,包括如下步骤:1)日志和异常探针模块LAP以迭代服务器的方式顺序接收、处理各个模块发来的消息;2)对接收到的消息类型进行判断,将日志存储在***参数区,将异常数据存储在异常文件中;3)如果收到的是日志查看,LAP会读取***参数区的日志数据,显示到终端;如果收到的是上传日志消息,则将***参数区的日志上传给客户端的ftp服务器端;如果收到的上传异常消息,则将异常文件中的异常数据上传给客户端的ftp服务器。本发明具有的优点和积极效果是:实现了日志和异常数据的可靠存储,占用空间小,可查看和上传,操作方便;方便了嵌入式***的开发、调试与维护,为故障定位提供简单、可靠的解决方案。
Description
技术领域
本发明属于嵌入式软件开发中的日志和异常探针的实现技术领域,尤其是涉及一种日志和异常探针的实现方法。
背景技术
所谓日志(Log)是指***所指定对象的某些操作和其操作结果按时间有序的集合。每个日志文件由日志记录组成,每条日志记录描述了一次单独的***事件。通常情况下,***日志是用户可以直接阅读的文本文件,其中包含了一个时间戳和一个信息或者子***所特有的其他信息。日志文件为***的相关活动记录必要的、有价值的信息,这对***监控、查询、报表和安全审计是十分重要的。在Windows***中日志主要包括应用程序、安全、***等几个部分。它记录着各种***服务的启动、运行、关闭等信息。在Linux***中,有三个主要的日志子***:连接时间日志、进程统计日志、错误日志。
异常就是程序在运行时出现的错误,这些异常有的很严重,有的则较轻。
日志和异常探针模块(Log and Abnormity Probe,简称LAP)主要就是用来记录***的主要的运作情况和程序运行时出现的异常。用户通过查询日志文件,可以了解设备的一些重大操作。日志需要存储诸如***重起、用户修改配置等重要信息,数据量相对小些。
现有的日志和异常探针模块的可靠性不佳,使用不便。
发明内容
本发明要解决的问题是提供一种日志和异常探针的实现方法。
为解决上述技术问题,本发明采用的技术方案是:
一种日志和异常探针的实现方法,包括如下步骤:
1)日志和异常探针模块LAP以迭代服务器的方式顺序接收、处理各个模块发来的消息;
2)对接收到的消息类型进行判断,如果收到的是日志或异常数据,LAP则会将日志存储在***参数区,将异常数据存储在异常文件中;所述日志和异常数据均是以结构体形式存储到二进制文件中;
3)如果收到的是日志查看,LAP会读取***参数区的日志数据,显示到终端;
如果收到的是上传日志消息,则将***参数区的日志上传给客户端的ftp服务器端;
如果收到的上传异常消息,则将异常文件中的异常数据上传给客户端的ftp服务器;以及
日志或异常数据在终端显示或上传前,通过转换工具将二进制的日志和异常文件转换成可阅读的文本文件。
进一步的,所述日志、异常数据均是采用循环存储的方式。
进一步的,如果收到的是日志查看,LAP将读取***参数区的日志数据,并将二进制的日志数据解析ascii形式,然后将这些解析后的数据显示到终端。
进一步的,所述日志的转换工具的转换过程如下:其中日志文件的存储格式为:事件(消息)ID、时间、事件描述信息;
事件id和事件名有具体的对应关系,定义在事件id文件中,事件id文件是一个头文件,定义了事件id和事件名对应的宏,事件id文件为一个头文件,里面定义的的有关事件名称的宏;
转换工具读取日志文件的每条日志,将日志的事件id和事件id文件中的宏值比较,相等时,则宏名就是事件名,然后将宏名存放到转换后的文件中,如果没有匹配的宏,则将事件id拷贝到转换后的文件中;
时间在日志文件是以1970年经过的秒来记录的,需要转换为年月日时分秒的形式;
事件描述信息在日志文件中是按照ascii码存储的。
进一步的,所述异常文件的转换工具的转换过程如下:其中异常探针在文件中的存储格式为:所在文件ID、所在行、时间、3个变量值、原因码;
所在异常文件id和具体的文件名之间的对应关系定义在文件id文件中,文件id文件是一个头文件,文件id文件中定义的是文件id与文件名的对应宏,宏值就是文件名;转换工具读取异常文件的每条异常记录,将异常中文件id和文件id文件中的宏值比较,相等时,则宏名就是文件名,然后将宏名存放到转换后的文件中,如果没有匹配,就将文件id拷贝到转换后的文件中;时间和日志的时间处理一样;三个变量值在日志文件中按照二进制格式存储,按照16进制数格式转换为文本格式,每个变量需要10byte空间;原因码在日志文件中以二进制格式存储,转换后为原因码对应的宏,没有宏的显示数值,原因码的宏定义在头文件中,转换工具通过读取这个文件进行转换。
本发明具有的优点和积极效果是:
实现了日志和异常数据的可靠存储,占用空间小,可查看和上传,操作方便;方便了嵌入式***的开发、调试与维护,为故障定位提供简单、可靠的解决方案。
附图说明
图1本发明日志、异常记录的存储方式;
图2本发明日志、异常收集存储流程图;
图3本发明日志查看流程图;
图4本发明日志、异常文件上传流程图;
图5本发明日志文件转换流程图。
具体实施方式
下面结合附图对本发明的具体实施例做详细说明。
一种日志和异常探针的实现方法,包括如下步骤:
步骤一:日志和异常探针模块LAP以迭代服务器的方式顺序接收、处理各个模块发来的消息;
步骤二:对接收到的消息类型进行判断,如果收到的是日志或异常数据,LAP则会将日志存储在***参数区,将异常数据存储在异常文件中;
***的重要操作和出现的异常需要永久的记录在***中,以待研发人员或用户查看使用;日志主要存储在一个命名为***参数区的部分,***参数区位于flash中的非文件***区,断电之后仍能存储信息,而日志之所以存储在***参数区主要是考虑日志安全的需要;异常存储在文件,设备断电时这些文件还是能够存在的;
步骤三:如果收到的是日志查看,LAP会读取***参数区的日志数据,显示到终端;
如果收到的是上传日志消息,则将***参数区的日志上传给客户端的ftp服务器端;
如果收到的上传异常消息,则将异常文件中的异常数据上传给客户端的ftp服务器。
所述日志、异常数据的存储格式如下:
由于嵌入式设备的存储空间有限不可能记录所有***的运作日志、只能记录一些重要、有用的日志,主要包括:上电启动、复位、配置、版本下载、版本激活、反激活、uboot升级、lmt登录等。
日志文件的存储格式如下:
[事件(消息)ID时间事件描述信息]
如表1所示:
事件ID:主要是标记事件的ID号;
时间:主要是记录发生的时间,记录从1970年以来经历的秒数;
事件描述信息:主要是说明发生这个事件的状态、原因、成功等情况,用户也可以根据具体情况,进行一些说明性的调整。
异常探针在文件中的存储格式如下:
[所在文件ID所在行时间3个变量值原因码]
如表2所示:
所在文件ID:表示异常发生所在的文件;
所在行:记录异常发生的在文件的第几行;
时间:异常发生的时间,记录从1970年以来经历的秒数;
3个变量值:记录异常时,记录3个变量值,这些变量的选取,是由用户自己确定的。
原因码:***对异常原因进行统一定义,一种原因对应一个码值,原因码的位置就是添加发生异常时的原因的码值,这些原因码是由用户自己定义的。
所述日志、异常数据的存储方式如下:
由于异常是按照结构体形式存储到二进制文件中的,每条异常记录大小是固定的,并且是按照时间排列的,所以异常记录在文件中采用循环存储的方式,当记录超过10000条时,新的异常记录会覆盖掉第一条记录,也就是最老的那条记录,过程如图1所示。
日志存储在***参数区,最多可以记录105条,也是按照结构体形式存储的,每条日志大小是固定的,所以日志的存储同样采用循环存储方式。
所述日志查看的过程如下:
用户在终端输入查看日志命令,LAP识别这个命令,然后LAP将读取***参数区的日志数据,并将二进制的日志数据解析ascii形式,然后将这些解析后的数据显示到终端,其流程图如图3所示。
如图4所示,所述日志、异常文件上传的过程如下:
LAP根据命令参数得知要上传日志文件、还是异常文件,并过ftp服务器端的ip、端口、用户名、密码;其中LAP与ftp服务器建立联系的过程如下:
LAP从命令中获取ftp服务器ip、端口号,并与ftp服务器建立命令通道,ftp服务器响应成功,则进行下一步,否则LAP在终端显示建链失败;
LAP以用户名、密码为参数,向ftp服务器发送命令USER、PASS,登录到ftp服务器,ftp服务器响应成功,则进行下一步,否则LAP在终端显示建链失败;
LAP向ftp服务器发送命令TYPE I,表示传送的文件类型为二进制文件,ftp服务器响应成功,则进行下一步,否则LAP在终端显示建链失败;
LAP向ftp服务器发送命令STOR,表示要上传文件,ftp服务器响应成功,则进行下一步,否则LAP在终端显示建链失败;
LAP向ftp服务器发送命令PASV,表示工作在被动方式,ftp服务器响应成功,则进行下一步,否则LAP在终端显示建链失败;
LAP等待ftp服务器发来的响应,响应中包括ftp服务器接收数据的所用的ip和端口号,LAP使用ftp服务器传来的ip和端口号建立数据通道,向ftp服务器发送日志/异常数据;
当日志/异常数据发送完后,LAP向ftp服务器发送命令QUIT,表示退出登录,LAP在终端显示上传失败;
如果在上传时,出现了断点情况,则LAP将终止上传,LAP在终端显示上传失败。
由于上传给用户的日志、异常文件是二进制文件,用户是无法直接阅读的,所以,转换工具主要是负责将二进制的日志、异常文件转换成可阅读的文本文件,也可以将异常文件导出到excel表中,方便用户对异常的查找排序;下面介绍转换工具的转换过程;
如图5所示,所述日志的转换过程如下:每条日志包括事件ID、时间和事件描述信息,
事件ID和事件名有具体的对应关系,定义在事件id文件中,事件id文件是一个头文件,定义了事件id和事件名对应的宏,
事件id文件EventId.h的内容如下:
#define start (0x0001)
#define reset (0x0002)
...
事件id文件为一个头文件,里面定义的的有关事件名称的宏;
转换工具读取日志文件的每条日志,将日志的事件id和事件id文件中的宏值比较,相等时,则宏名就是事件名,然后将宏名存放到转换后的文件中,如果没有匹配的宏,则将事件id拷贝到转换后的文件中;
时间在日志文件是以1970年经过的秒来记录的,需要转换为年月日时分秒的形式;
事件描述信息在日志文件中是按照ascii码存储的,直接拿过来就可以了。
所述异常文件的转换过程如下:每条异常包括所在文件ID、所在行、时间、三个变量值和原因码,
所在文件ID和具体的文件名之间的对应关系定义在文件id文件中,文件id是一个头文件,文件id文件中定义的是文件id与文件名的对应宏,文件id文件FileId.h中的内容如下:
#define cli.c (0x0001)
#define ris_epld_drv.c (0x0002)
...
宏值就是文件名,
文件ID和文件名的转换过程和日志的事件id的转换类似,转换工具读取异常文件的每条异常记录,将异常中文件id和文件id文件中的宏值比较,相等时,则宏名就是文件名,然后将宏名存放到转换后的文件中,如果没有匹配,就将文件id拷贝到转换后的文件中;
时间和日志的时间处理一样;
三个变量值在日志文件中按照二进制格式存储,按照16进制数格式转换为文本格式,每个变量需要10byte空间,例如:0x12345678;
原因码在日志文件中以二进制格式存储,转换后为原因码对应的宏,没有宏的显示数值,原因码的宏定义在头文件Pub_ErrorDef.h中,转换工具通过读取这个文件进行转换;其流程图与日志转换类似。
LAP按照功能分为日志、异常上传,日志查看,日志、异常收集,日志、异常存储四部分,还有转换工具。顾名思义,日志的收集模块专门负责接收各个模块发来的日志和异常数据,然后通过存储模块将这些数据存储在flash***参数区中或异常文件中。上传模块收到上传命令后,会将***参数区中的日志数据或异常文件的异常记录上传给用户端的ftp服务器;而日志查看模块将日志的数据显示给用户终端。
以上对本发明的一个实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。
Claims (5)
1.一种日志和异常探针的实现方法,其特征在于包括如下步骤:
1)日志和异常探针模块LAP以迭代服务器的方式顺序接收、处理各个模块发来的消息;
2)对接收到的消息类型进行判断,如果收到的是日志或异常数据,LAP则会将日志存储在***参数区,将异常数据存储在异常文件中;所述日志和异常数据均是以结构体形式存储到二进制文件中;
3)如果收到的是日志查看,LAP会读取***参数区的日志数据,显示到终端;
如果收到的是上传日志消息,则将***参数区的日志上传给客户端的ftp服务器端;
如果收到的上传异常消息,则将异常文件中的异常数据上传给客户端的ftp服务器;以及
日志或异常数据在终端显示或上传前,通过转换工具将二进制的日志和异常文件转换成可阅读的文本文件。
2.根据权利要求1所述的日志和异常探针的实现方法,其特征在于:所述日志、异常数据均是采用循环存储的方式。
3.根据权利要求1所述的日志和异常探针的实现方法,其特征在于:如果收到的是日志查看,LAP将读取***参数区的日志数据,并将二进制的日志数据解析ascii形式,然后将这些解析后的数据显示到终端。
4.根据权利要求1所述的日志和异常探针的实现方法,其特征在于:所述日志的转换工具的转换过程如下:其中日志文件的存储格式为:事件(消息)ID、时间、事件描述信息;
事件id和事件名有具体的对应关系,定义在事件id文件中,事件id文件是一个头文件,定义了事件id和事件名对应的宏,事件id文件为一个头文件,里面定义的的有关事件名称的宏;
转换工具读取日志文件的每条日志,将日志的事件id和事件id文件中的宏值比较,相等时,则宏名就是事件名,然后将宏名存放到转换后的文件中,如果没有匹配的宏,则将事件id拷贝到转换后的文件中;
时间在日志文件是以1970年经过的秒来记录的,需要转换为年月日时分秒的形式;
事件描述信息在日志文件中是按照ascii码存储的。
5.根据权利要求1所述的日志和异常探针的实现方法,其特征在于:所述异常文件的转换工具的转换过程如下:其中异常探针在文件中的存储格式为:所在文件ID、所在行、时间、3个变量值、原因码;
所在异常文件id和具体的文件名之间的对应关系定义在文件id文件中,文件id文件是一个头文件,文件id文件中定义的是文件id与文件名的对应宏,宏值就是文件名;转换工具读取异常文件的每条异常记录,将异常中文件id和文件id文件中的宏值比较,相等时,则宏名就是文件名,然后将宏名存放到转换后的文件中,如果没有匹配,就将文件id拷贝到转换后的文件中;时间和日志的时间处理一样;三个变量值在日志文件中按照二进制格式存储,按照16进制数格式转换为文本格式,每个变量需要10byte空间;原因码在日志文件中以二进制格式存储,转换后为原因码对应的宏,没有宏的显示数值,原因码的宏定义在头文件中,转换工具通过读取这个文件进行转换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410766410.7A CN104734881A (zh) | 2014-12-11 | 2014-12-11 | 一种日志和异常探针的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410766410.7A CN104734881A (zh) | 2014-12-11 | 2014-12-11 | 一种日志和异常探针的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104734881A true CN104734881A (zh) | 2015-06-24 |
Family
ID=53458337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410766410.7A Pending CN104734881A (zh) | 2014-12-11 | 2014-12-11 | 一种日志和异常探针的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104734881A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109039724A (zh) * | 2018-07-23 | 2018-12-18 | 北京奇艺世纪科技有限公司 | 日志上传方法和装置 |
CN109257213A (zh) * | 2018-09-07 | 2019-01-22 | 广东电网有限责任公司 | 判断计算机终端准入验证失败的方法和装置 |
CN111435308A (zh) * | 2019-01-11 | 2020-07-21 | 北京确安科技股份有限公司 | 一种获取探针台程序名称的方法及装置 |
CN112214463A (zh) * | 2019-07-12 | 2021-01-12 | 中科云谷科技有限公司 | Gps终端的监测方法、装置、***及存储介质 |
-
2014
- 2014-12-11 CN CN201410766410.7A patent/CN104734881A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109039724A (zh) * | 2018-07-23 | 2018-12-18 | 北京奇艺世纪科技有限公司 | 日志上传方法和装置 |
CN109039724B (zh) * | 2018-07-23 | 2022-02-01 | 北京奇艺世纪科技有限公司 | 日志上传方法和装置 |
CN109257213A (zh) * | 2018-09-07 | 2019-01-22 | 广东电网有限责任公司 | 判断计算机终端准入验证失败的方法和装置 |
CN109257213B (zh) * | 2018-09-07 | 2021-06-29 | 广东电网有限责任公司 | 判断计算机终端准入验证失败的方法和装置 |
CN111435308A (zh) * | 2019-01-11 | 2020-07-21 | 北京确安科技股份有限公司 | 一种获取探针台程序名称的方法及装置 |
CN112214463A (zh) * | 2019-07-12 | 2021-01-12 | 中科云谷科技有限公司 | Gps终端的监测方法、装置、***及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102306114B (zh) | 基于云存储的数据定时备份和恢复方法 | |
US20100049717A1 (en) | Method and systems for sychronization of process control servers | |
CN102630046B (zh) | 数据获取***、方法、机顶盒、网络服务器 | |
CN104252500A (zh) | 一种数据库管理平台的故障修复方法和装置 | |
CN103226612B (zh) | 一种基于内存数据库的内容管理*** | |
CN101183312A (zh) | 终端通过接入usb存储设备实现版本升级及备份的方法 | |
CN103067230A (zh) | 一种通过植入监控代码实现对http服务监控的方法 | |
CN110401949A (zh) | 终端设备运行日志上传方法和装置 | |
CN105430327A (zh) | 一种nvr集群备份方法及装置 | |
US11288378B2 (en) | Embedded data protection and forensics for physically unsecure remote terminal unit (RTU) | |
CN104734881A (zh) | 一种日志和异常探针的实现方法 | |
CN102647025A (zh) | 基于中心服务器方式实现保护装置即插即用的方法 | |
CN102681931A (zh) | 一种日志和异常探针的实现方法 | |
CN102521390B (zh) | 一种基于功能插件的数据库管理监控*** | |
CN102594618A (zh) | 实现存储局域网络存储设备测试的方法及装置 | |
CN101763294A (zh) | 根据时间段查看和备份***操作日志的方法 | |
CN105871642A (zh) | 机房无人值守远程设备管理*** | |
CN103036913B (zh) | 一种移动终端动环监控方法、***和移动终端代理服务器 | |
CN112333758B (zh) | 电视网关***的稳定性监测管理方法、***及应用 | |
US20180336171A1 (en) | System and method for constructing extensible event log with javascript object notation (json) encoded payload data | |
CN104506939A (zh) | 一种信息上报方法及电视终端 | |
CN103414252A (zh) | 一种变电站通信服务配置信息实时同步***及其方法 | |
CN113239005B (zh) | 一种电力监控***i、iv区数据同步方法及装置 | |
CN102253890A (zh) | 一种嵌入式调试方法 | |
KR101361786B1 (ko) | Sdp를 이용한 데이터 통합 유닛 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150624 |
|
WD01 | Invention patent application deemed withdrawn after publication |