一种系统日志配置和记录方法

文档序号:9810430阅读:414来源:国知局
一种系统日志配置和记录方法
【技术领域】
[0001 ]本发明涉及一种系统日志配置和记录方法,具体涉及一种系统日志配置和记录方法。
【背景技术】
[0002]工业环境下运行的系统应用,通常需要反馈给使用者或开发人员一些信息,如状态值变化、参数改变,故障提示等信息。部分反馈信息参与用户交互,例如当用户通过键盘输入一段无效数据不能被系统正确识别时,需要及时向用户反馈并提示重新输入,可以采用屏幕输出(在当前界面中输出提示文本)的方式。除此以外,调试、故障等反馈信息一般情况下对于用户来说是透明的,此时为不影响用户体验,通常采用日志输出的形式来取代屏幕输出,目的是为了定位和排查问题,此外系统故障转储文件也是日志的一种。
[0003]通过以上叙述,信息的呈现形式大致可分为用户感知和用户不可感知两种,用户感知的场景诸如系统应用具备一个日志输出窗口。用户不可感知的场景则表现为默认隐藏窗口、文件形式、数据库、OPC数据、分布式数据记录等多种方式。
[0004]—、对于过程性非面向对象的原始日志信息,输出可以采用以下形式:
1、命令行终端下运行的系统可以使用printf函数将各类信息格式化输出到屏幕上 printfO函数的调用格式为:printf(〃〈格式化字符串>〃,〈参量表>)
2、VirtualC++ Debug模式下可以使用TRACE宏来输出信息至Debug窗口
该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代码量。
[0005]使用非常简单,格式如下:TRACE(〃DDDDDDDDDDD〃);TRACE(〃wewe%d〃,333);同样还存在TRACEO,TRACEl,TRACE2。。。分别对应O,I,2。。个参数TRACE信息输出到VC IDE环境的输出窗口(该窗口是你编译项目出错提示的那个窗口),但仅限于你在VC中运行你的DEBUG版本的程序。
[0006]TRACE信息还可以使用DEBUGVIEW来捕获到。这种情况下,你不能在VC的IDE环境中运行你的程序,而将BUILD好的DEBUG版本的程序单独运行,这个时候可以在DEBUGVIEW的窗口看到DEBUGVIEw格式的输出了。
[0007]VC中TRACE的用法有以下四种:
I: TRACE,就是不带动态参数输出字符串,类似C的printf(〃输出字符串〃);
2: TRACE中的字符串可以带一个参数输出,类似C的printf(〃...%d〃,变量);
3: TRACE可以带两个参数输出,类似C的printf(〃...%d...%f〃,变量1,变量2);
4: TRACE可以带三个参数输出,类似C的printf (〃...%(1,%(1,%(1〃,变量1,变量2,变量
3);
Win32 API支持使用OutputDebugString输出信息到各类调试器 VOID OutputDebugString(LPCTSTR IpOutputString);
ParametersIpOutputString
[in] Pointer to the null-terminated string to be displayed.Return Values
This funct1n does not return a value.4、另外也可以通过向数据库添加一条记录的方式实现数据记录到数据库中,可以使用标准SQL语句insert into,具体语法可以参考ANSI和ISO的相关文档。
[0008]二、面向对象的日志信息,适用于批量日志的管理,以下为两种常见的开源库:
1、log4cpp是个基于LGPL的开源项目,移植自Java的日志处理跟踪项目log4 j,并保持了API上的一致。其类似的支持库还包括Java(log4j),C(log4c),python(log4p)等,它的接口字符串参数类型使用std:: string,支持ANSI字符集。主要支持功能:
?提供了可扩展的多种日志记录方式;
?提供了 NDC(嵌套诊断上下文),可用于多线程、多场景的跟踪调试;
?提供了完整的日志动态优先级控制,可随时调整需要记录的日志优先级;
?可通过配置文件完成所有配置并动态加载;
?性能优秀,内存占用小,经过编译后的log4cpp.dl I大小仅有160kb ;
?代码级的平台无关性,Log4cpp源代码经过编译后,适用于大多数主流的操作系统和开发工具;
?概念清晰,学习和使用方便,熟练程序员一天之内即可很好地应用log4cpp进行开发。
[0009]2、glog它比log4系列的库都要简单,不过它不支持用配置文件控制日志行为。Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,例:
LOG(INFO) << 〃Found 〃 << num_cookies << 〃 cookies〃;
“LOG”宏为日志输出关键字,“INFO”为严重性程度。
[0010]主要支持功能:
?参数设置,以命令行参数的方式设置标志参数来控制日志记录行为;
?严重性分级,根据日志严重性分级记录日志;
?可有条件地记录日志信息;
?条件中止程序。丰富的条件判定宏,可预设程序终止条件;
?异常信号处理。程序异常情况,可自定义异常处理过程;
?支持debug功能。可只用于debug模式;
?自定义日志信息;
?线程安全日志记录方式;
?系统级日志记录;
?google perror风格日志信息;
?精简日志字符串信息。
[0011]以上方法在开发阶段确定了日志的内容,格式化成什么样等,实际使用中,可以通过各类条件来触发日志是否被记录。
[0012]但在工业环境中,考虑到系统资源、存储设备的限制,过度使用将导致不可预料的后果,因此有必要使用按需启停技术来决定当前日志是否被记录下来。基于同样的原因,日志系统也需要考虑输出粒度控制,日志文件大小、数量可控。对于某些系统来说处理能力相对较弱,此时应充分考虑到日志系统对整个系统运行的影响,在系统中具备负载平衡技术。

【发明内容】

[0013]本发明的目的是提供一种系统日志配置和记录方法,提供格式化内容及原始内存块数据输出等功能,另外增加了对工业现场按需启停的需要,同时对日志的输出粒度,文件大小,数据可以控制,内部通过一系列算法优化实现系统负载平衡。
[0014]本发明提供了如下的技术方案:
一种系统日志配置和记录方法,包括:创建,打开,格式化,输出格式宏定义;Conf igure是配置抽象类,提供了按需启停,输出粒度,文件大小,数据设置,系统负载参数设置接口,派生类包括注册表、文件、分布式数据库、网络接口四个类对象扮演了实际配置
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1