通用的应用程序高级日志系统
2009-03-16 20:02:17 来源:WEB开发网存储类能对数据缓冲进行清扫处理,缺省情况下,该类在自己的缓冲中存储数据,并且只有调用 FlushData 函数才能将缓冲数据定向到磁盘或其它地方。一般情况下,存储类的缓冲受系统资源的限制,当缓冲达到限制时它会自动进行清理。建立缓冲限制使用 SetBufferLimit 函数。默认情况下,存储类实现必须要分配缓冲并只能用 SetBufferLimit 函数改变缓冲的大小。
存储类使用 WriteString 函数来存储串。所以它既可以存储格式化串,也能存储原始非格式化数据。
日志类
这一部分我们要讨论两个类:CLog 和 CFuncLog。CLog 在 clog.h 中声明,实现文件是 clog.cpp,CFunLog 在 cfunlog.h 声明,实现文件是 cfunlog.cpp。
日志类有一个很特别的函数,使用它来记录日志很容易,你可以对其跟踪输出进行配置:如果你不需要记录时间,只要用 SetLogTime 将 CLog 类的标志设为 FALSE 即可。此外你还可以调用 SetTimeFormat 来改变时间的输出格式。缺省情况下,该类使用长时间格式。在头文件的开始处有两个很有用的时间格式定义。第一个是带秒输出的长格式,第二个是不带秒输出的短格式:
#define DEF_TIME_LONG_STR "%02u:%02u:%02u ms:%03u"
#define DEF_TIME_SHORT_STR "%02u:%02u:%02u"
警告:格式串最多四个,否则会有堆栈溢出错误
CLog 还能具备如下的属性:
信息输出格式属性——SetMessageFormat 和 GetMessageFormat 函数;
AutoFlush 属性——SetAutoFlush 和 GetAutoFlush 函数;如果是 true,则每次跟踪信息都将缓冲数据存入磁盘,这对应用程序处于alpha测试和代码中存在一般保护性错误时非常有用。第二种模式主要用于记录应用程序的控制状态以及应用程序的执行时间不是很重要时——这是日志系统的顶层性能模式。
更多精彩
赞助商链接