日志模块
本文介绍的日志系统包括七个 C++ 类:CLog, CFuncLog, IStoreLog, CWinLog, CFileLog, CAutoCritic, CLogSimpleLock.CLog 是所有日志模块中最主要的一个类,在大多数情况下,这个类在应用程序中最好是单实例的。但并不是必须的。重要性其次的一个类是 CFuncLog,这个类用于对函数调用的进入和退出进行记录。当然开发人员也可以使用这个类对任何数据进行日志记录。该类重载了 << 操作符,所以使用很方便。
下图是本文介绍的日志系统使用截图
日志模块的 UML 设计
从下图可以看到,日志模块类可以分成两个部分:
1. Storage 类 —— 存储类
2. Logging 类 —— 日志类
图一 UML 设计的类继承图
存储类:
IStoreLog 类的声明
///////////////////////////////////////////////////////// // 此类是为一个抽象类,建立三个默认的函数,以便支持所有子类, // 任何子类都必须支持缓冲和非缓冲存储 ///////////////////////////////////////////////////////// class IStoreLog { public: virtual ~IStoreLog( void ){}; // 虚拟析构函数 virtual int FlushData() = 0; virtual int WriteString( const std::string &Message ) = 0; virtual int SetBufferLimit( long lSize ) = 0; }; |