通用的应用程序高级日志系统
2009-03-16 20:02:17 来源:WEB开发网CLog 构造函数的第一个参数必须是 IStoreLog 接口指针。日志模块中有两个 IStoreLog 实现:一个是 CWinLog,另一个是 CFileLog。前者创建 GUI 窗口,并在窗口中显示日志信息,后者将日志信息存储到文件中。由于输出文件可被用于任何 OS 设备或命名管道等,它使用 CreateFile API 函数处理。
CLog 构造函数的第二个参数是日志信息的级别,可以根据需要来设置。所以,如果将它设置为 0,则输出日志仅为 ERROR 信息。如果设置为 1,则日志输出为 ERROR 和 WARNING 信息.....
第三个参数针对 CLog 实例的,说明这个实例是否为 IStoreLog 的父类。缺省值为 true。所以 CLog 类的析构函数要删除 IStoreLog 类的实例。
如果你想要日志函数的进入和退出,可以向下面这样:
CRepTestApp::CRepTestApp()
{
CFuncLog log( m_pLog, "CRepTestApp::CRepTestApp" );
...
}
上面的代码将在进入函数和退出函数时记录日志。这里使用了自动变量的特性。进入函数时,构造函数记录“enter.....”信息,退出函数时,析构函数在日志中记录“leave......”,如果还想添加其它的日志信息,可以用如下代码:
int something = 100;
log << something;
...
警告:操作符 << 以原始格式存储日志信息。
使用 CFuncLog 类的 LogString 可以很容易添加需要的信息到日志中。
如果你想要将存储到其它地方,那么必须自己实现 IStoreLog 类,并用其实例作为某个构造函数的参数。CAutoCritic 和 CLogSimpleLock 类是对 Windows 临界区 API 的封装。这个类是在单独的文件中实现的,并在名字空间 LOGGER 中使用。你可以通过其它的 IStoreLog 类灵活使用。
具体细节和应用例子请参考源代码。
更多精彩
赞助商链接