ATL 中的简单日志实用程序






4.67/5 (3投票s)
2000 年 1 月 4 日

96829

881
一个简单的日志实用程序,
您可能已经注意到,在开发 ATL 组件时,有很多时候您会觉得应该在某个点跟踪一些消息。为此,几乎每个人首先尝试的是 ATLTRACE 或 ATLTRACE2,它们都将消息跟踪到调试输出。这很完美,但问题是您只能在调试模式下跟踪。您无法在运行应用程序时跟踪任何内容。一种选择是查看 NT 事件记录器(如果您使用的是 Windows NT),但问题是那里有太多的不同事件,您会感到放弃。此外,您需要学习用于将任何内容写入 NT 事件记录器的 API。因此,我想开发一个简单的 ATL 组件,您可以使用它来记录事件。请记住,这只是第一个版本。根据反馈,我计划增强日志记录器并提供更多功能,例如将日志保存到数据库或文件、按时间排序等。
源代码
当您解压缩 zip 文件 时,您将获得三个目录
\ATLLogApp
:这是日志服务器,即它负责记录事件。如果您愿意,您可以直接编译此 DLL,然后在您的应用程序中使用它。此 DLL 托管一个组件CoLogger
,它公开ICoLogger
接口。它具有以下方法Initialize()
- 应调用此方法以初始化服务器。
Log([in] BSTR Message)
- 调用此方法以记录数据。
UnInitialize()
- 这将取消初始化服务器。
\ATLClientForTracer
:这是服务器的示例 ATL 客户端,它只是从 MFC 客户端转发调用\MFCClient:
这是一个 MFC 客户端,它在每秒后记录消息。有一个定时器触发事件。
如何使用。
在您的应用程序(MFC 或 ATL)中,只需输入
#import "..\ATLLogApp.tlb" no_namespace named_guids //specify the path to the tlb.
您将在源输出目录(通常是调试)中获得两个文件 .tlh 和 .tli。现在要使用它,只需声明一个类型为 ICoLoggerPtr 的智能指针。例如:
CYourclass : public ...
{
ICoLoggerPtr m_Log;
...
}
在 cpp 文件中创建日志记录器实例,然后调用 Initialize
// implemention file... const HRESULT hrCreate = m_Log.CreateInstance(__uuidof(CoLogger)); if(FAILED(hrCreate)) return E_FAIL; const HRESULT hrInit = m_Log->Initialize();
现在,在您想要记录的地方,在此接口上调用 Log 方法。
这是运行应用程序时的示例屏幕截图。
按 Atl-S。一段时间后,您将获得此屏幕。
欢迎提出任何建议。
编译顺序
- AtlLogApp
- AtlClientForTracer
- MFCClient。