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

适用于您的 Windows 应用程序的小型简易 TRACE/Log 支持

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.56/5 (9投票s)

2006年2月22日

2分钟阅读

viewsIcon

73809

downloadIcon

516

此头文件将为您提供最简单的方法,从您的 MFC 应用程序中记录一些跟踪消息。

引言

有时,在开发下一个 Windows 应用程序时,您可能希望在应用程序的 _DEBUG 版本中添加一些简单的记录器或跟踪支持。标准的 Microsoft TRACE 工具非常不方便和奇怪。您想要的只是将代码中的一些有用信息打印到文本文件,或者可能打印到 VS IDE 输出窗口。这正是 MyTrace 所做的事情。将一个头文件包含到您的项目中,您就可以开始了。

用法

首先,您需要将 mytrace.h 头文件包含到您的项目中。然后在您开始记录任何消息之前,您需要像这样初始化 MyTrace

MYTRACE_INIT("MyApp_log.txt");
//Init MT with single log file

或者,如果您希望所有真正“糟糕的错误”都报告到一个单独的文件中,则像这样

MYTRACE_INIT_EX("MyApp_log.txt", "MyApp_errors.txt");
// main log and error log files

相应的文本文件将在您的应用程序工作文件夹中创建。您可以选择性地设置您想要在日志中看到的最低严重性级别(默认级别为 MT::LEVEL_INFO

MYTRACE_LEVEL(MT::LEVEL_DEBUG);
// set minimal trace messages severity to report

您可以像这样添加跟踪消息

MYTRACE(MT::LEVEL_INFO, 
    "\t\t\t MyApp v.%d.%d.%d started \n\n", 1, 0, 0);
MYTRACE(MT::LEVEL_ERROR, 
    "Wrong parameter: %s", wrongStringParameter);

并且在您的应用程序即将关闭之前,不要忘记通过一个简单的调用来反初始化 MyTrace,像这样

MYTRACE_DEINIT;
// stop MT

注释

您可以从以下跟踪消息的严重性级别中选择一个:LEVEL_ERRORLEVEL_WARNINGLEVEL_INFOLEVEL_DEBUG

如果您使用 MYTRACE_INIT_EX 初始化 MyTrace,那么所有具有 LEVEL_ERRORLEVEL_WARNING 级别的消息也将报告到单独的错误日志文本文件中,以便于调试。

您可以通过注释/取消注释文件顶部的 #define 来更改 MyTrace 的一些设置。

  • #define MT_USE_ATLTRACE 开启/关闭将消息转发到标准的 Microsoft ATLTRACE 宏。它使您能够在 VS IDE 的“输出”窗口中看到跟踪消息。默认情况下,这是启用的。
  • #define MT_KEEP_ATLTRACE_LEVELS 指示 MyTrace 严重性级别是否也应被视为 ATLTRACE 级别。默认情况下,所有转发到 ATLTRACE 的消息的级别都为 0
  • #define MT_REDIRECT_STDOUT 将全局 stdout 重定向到 MyTrace 日志文件。如果您想捕获来自 printf 类函数的所有输出,您可能希望这样做,但这可能会干扰您的应用程序行为;因此默认情况下,此选项已禁用。

这是一个日志记录的示例

...
INFO    d:\projects\MyApp\MyAppMain.cpp(105) 02/20/06 09:00:41:
Starting Application...
DEBUG   d:\projects\MyApp\MyAppMain.cpp(322) 02/20/06 09:00:42:
Hello World
WARNING d:\projects\MyApp\MyAppMain.cpp(408) 02/20/06 09:00:43:
Runtime Excepton 1234
INFO    d:\projects\MyApp\MyAppMain.cpp(512) 02/20/06 09:00:44:
Closing Application...
...
© . All rights reserved.