Small and Simple TRACE/Log support for your Windows application






4.56/5 (9 votes)
Feb 22, 2006
2 min read

73184

516
This header file will provide you with the smallest and simplest way to log some trace messages from your MFC application.
Introduction
Sometime while developing your next Windows application, you might want to add some simple logger or trace support into the _DEBUG
version of the app. The standard Microsoft TRACE tool is just too inconvenient and weird. All you want is just printout some useful information from your code into text files, or maybe to the VS IDE output window. That is exactly what MyTrace
does. Include one single header file into your project, and you are ready to go.
Usage
First of all, you need to include the mytrace.h header into your project. Then before you start logging any messages, you need to initialize MyTrace
like this:
MYTRACE_INIT("MyApp_log.txt"); //Init MT with single log file
or if you want all really "bad bugs" to be reported into a separate file, then like this:
MYTRACE_INIT_EX("MyApp_log.txt", "MyApp_errors.txt"); // main log and error log files
Corresponding text files will be created in your application working folder. Optionally, you can set the minimal severity level for the messages you want to see in the logs (the default level is MT::LEVEL_INFO
):
MYTRACE_LEVEL(MT::LEVEL_DEBUG);
// set minimal trace messages severity to report
And you can add trace messages like this:
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);
And just before your application is about to close, do not forget to de-initialize MyTrace
by a simple call like this:
MYTRACE_DEINIT;
// stop MT
Notes
You can choose one from the following severity levels for the trace message: LEVEL_ERROR
, LEVEL_WARNING
, LEVEL_INFO
, or LEVEL_DEBUG
.
If you initialize MyTrace
with MYTRACE_INIT_EX
then all messages with LEVEL_ERROR
and LEVEL_WARNING
levels will also be reported into separate error log text files for debugging convenience.
You can change some settings for MyTrace
by commenting/un-commenting #define
s on the top of the file.
#define MT_USE_ATLTRACE
turns on/off the forwarding of messages to the standard MicrosoftATLTRACE
macros. It enables you to see trace messages in the “output” window in the VS IDE. This is enabled by default.#define MT_KEEP_ATLTRACE_LEVELS
indicates ifMyTrace
severity levels should be treated asATLTRACE
levels also. By default, all messages forwarded toATLTRACE
with level0
.#define MT_REDIRECT_STDOUT
redirects globalstdout
into theMyTrace
log file. You might want to do that if you want to grab all the output from theprintf
class functions, but that could interfere with your application behavior; so by default, this option is disabled.
This is an example of how the log records look like:
...
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...
...