基于面向对象系统日志管理模块的设计与实现_叶培顺

基于面向对象系统日志管理模块的设计与实现_叶培顺

ID:38285133

大小:498.35 KB

页数:4页

时间:2019-06-03

基于面向对象系统日志管理模块的设计与实现_叶培顺_第1页
基于面向对象系统日志管理模块的设计与实现_叶培顺_第2页
基于面向对象系统日志管理模块的设计与实现_叶培顺_第3页
基于面向对象系统日志管理模块的设计与实现_叶培顺_第4页
资源描述:

《基于面向对象系统日志管理模块的设计与实现_叶培顺》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第8卷第16期2008年8月科学技术与工程Vol18No116Aug120081671-1819(2008)16-4715-04ScienceTechnologyandEngineeringZ2008Sci1Tech1Engng1基于面向对象系统日志管理模块的设计与实现叶培顺刘峰(榆林学院计算机与网络工程系,榆林719000)摘要大型软件系统都有详细的日志文件记录系统运行情况,描述了一种基于面向对象的并且采用多线程设计的日志管理模块的设计与实现,日志管理模块将软件系统中记录日志的操作提取出来形成了独立的模块,降低了系统的耦合度,提高了复用性。关键词面向对象日志多线程复用

2、性中图法分类号TP315;文献标志码B日志在大型软件系统的开发和运行阶段都起主要的类:日志管理、日志队列、日志线程。着非常重要的作用。在开发阶段,日志主要用来作由于整个软件系统只需要生成一个日志管理为软件调试的手段之一,在集成测试和系统测试中对象来管理所有的日志记录,因此采用了一个常用[1]作为测试人员定位故障的依据。在运行阶段,日志的设计模式:单例模式(Singlaton)。单例模式是成为开发人员定位和修改故障的主要依据,日志可一种常用的创建型设计模式,它保证了一个类只产以为审计和监测提供数据,系统管理员根据日志来生一个实例。采用此设计可以保证在多进程,多线评价安全程

3、序的效率以及确定引起安全破坏或系程环境下只生成一个日志管理对象,作为所有日志统功能失效的原因。信息的入口。日志管理对象将日志信息插入到对应的日志队列中,日志线程从日志队列中取出日志1日志管理模块的设计与实现信息并写入文件。本模块的设计类图如图1所示。日志信息是由开发人员在程序中写入到日志文件中,如果没有统一的日志管理模块来管理,记录的日志必然形式各异,结构混乱。本模块的设计要求将所有记录日志的操作提取出来,形成一个独立的模块,用来管理和记录整个系统需要记录的日志。此日志管理模块可以位处大型软件系统支撑层或者是公共模块,为其他子系统提供系统日志服务的接口。为了具备良好的可

4、移植性,要求本模块能够被不同的编译器编译后的程序调用。同时需要提供用户设置模块行为的接口,用户可以更改日图1设计类图志文件路径,自定义日志文件,过滤指定级别日志。模块采用/动态链接库0(DLL)的方式进行设计,111基于面向对象的设计为了以后的移植考虑,需要采用标准C++和Boost线程本模块根据面向对象的思想来设计,设计3个库来进行设计,如此便可以被不同的编译器编译后的程序调用,并实现多进程、多线程之间的同步。2008年5月4日收到在设计类图中类CloggerI是接口ILogger的实现第一作者简介:叶培顺。E-mai:lyps-110@1631com类,主要完成日志

5、记录的转发。类ClogManager完成系4716科学技术与工程8卷统日志管理和多线程管理功能。类ClogThread负责将(日志管理对象),同时根据配置文件来创建所有的具体的日志写入到对应的日志文件中,并完成日志级日志队列与日志线程。系统中所有的日志记录都别的判断等逻辑功能。模板类CsynQueue3T4是日志通过日志管理对象分发到对应的日志队列中,分发记录项的缓存队列,并带有互斥和同步功能。类Clog-日记记录的处理步骤如下:ger是对日志功能的封装,便于调用者使用。步骤一:检查日志时间是否为0(0为日志线程112工作原理停止标记),若是0到步骤四,否则到步骤二。本

6、模块为每个日志文件(系统日志文件或者用步骤二:若是系统日志,到步骤三;若是用户自定户自定义日志文件)创建一个日志线程。每个日志义日志并且备注与线程备注相同到步骤三,否则返回。线程对应一个独立的日志队列,用来缓存日志信息,步骤三:检查日志级别,只有大于或者等于指并且这些日志线程有统一的管理者。日志分派负责定的级别到步骤四,否则返回。创建、启动和停止日志线程,并将调用者的日志记录步骤四:日志信息插入日志队列。派发给各个日志队列,根据其备注和日志级别,判断11212日志队列与日志线程是否将这个日志记录加入到对应的日志队列中,日志日志队列管理由模板类CSynQueue来完成,内

7、线程不断的从日志队列中取得日志记录,最终写入相部使用了一个链表[2]来实现日志队列的功能,使用应的日志文件。工作流程图如图2所示。了模板类的设计,队列与具体的日志记录结构无关。该类继承了boost库中的noncopyable,其意义在于禁止访问复制构造函数和赋值操作符。由于在多线程环境下,日志队列必须提供互斥[3]和同步的机制。互斥机制通过锁定互斥条件来实现,队列在进行插入日志记录和取出日志记录的时候都要锁定互斥条件,这样保证任何时候只可能有一个线程对队列进行插入和取出操作。同步机制,采用了一种用于保护临界区的同步机制,同互斥体一样,同一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。