65.9K
CodeProject 正在变化。 阅读更多。
Home

ATL 中的简单日志实用程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.67/5 (3投票s)

2000 年 1 月 4 日

viewsIcon

96829

downloadIcon

881

一个简单的日志实用程序, 用于帮助调试您的 ATL 应用程序。

  • 下载演示项目 - 48 Kb
  • 您可能已经注意到,在开发 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。一段时间后,您将获得此屏幕。

    欢迎提出任何建议。

     

    编译顺序

    1. AtlLogApp
    2. AtlClientForTracer
    3. MFCClient。
    © . All rights reserved.