65.9K
CodeProject is changing. Read more.
Home

CSAStatusLog - status logger

Nov 17, 1999

CPOL
viewsIcon

71325

downloadIcon

1792

A very simple text logger that allows you to use printf-type formatting, with automatic application name and date stamping

CSAStatusLog is a very simple text logger.

The coolest part of this little class is that, much like printf and TRACE, it allows you to use string format text : "%2.4f", "%s", etc.. It will automatically add the application name and timestamp (both optional) to each line. That saves you the trouble of doing CString::Formats or sprintfs each time you need to log something. We love it here at Smaller Animals Software.

Sample output :

CStatusLogDemo : 11/18/1999 16:47:43 : Howdy, stranger!
CStatusLogDemo : 11/18/1999 16:47:43 : Did you know that 15 * 32.43 = 486.51 ?
CStatusLogDemo : 11/18/1999 16:47:43 : Ain't that great?
CStatusLogDemo : 11/18/1999 16:47:43 : I'm at : 0x4069b8
CStatusLogDemo : 11/18/1999 16:47:43 : Is anyone else here?
CStatusLogDemo : 11/18/1999 16:47:43 : Howdy! CCStatusLogDemoDlg here. 
CStatusLogDemo : 11/18/1999 16:47:43 : My address is 0x12fe78
CStatusLogDemo : 11/18/1999 16:47:45 : CCStatusLogDemoDlg, sayin "Good bye" 
CStatusLogDemo : 11/18/1999 16:47:45 : (cancel)
CStatusLogDemo : 11/18/1999 16:47:45 : Bye bye
The interface is simple :
// set the base file name ("Status.txt", for example)
void	Init(const char *pOutputFilename);

// output text, just like 
// TRACE or printf ( log.StatusOut("%d %s", iData, lpsData); )
BOOL	StatusOut(const char* fmt, ...);

// turn it on or off
void	Enable(BOOL bEnable);

// timestamp each line?
void    PrintTime(BOOL b);

// print the application name?
void    PrintAppName(BOOL b);

// override the default app name, which is the name the EXE (minus the ".exe")
void    SetAppName(const char *pName);

Use it like this

// instantiate one of these somewhere.
// we usually do a single logger for the entire app.
CSAStatusLog log;
....

// start it up
log.Init("Status.txt");
log.Enable(TRUE);
log.PrintTime(TRUE);
log.PrintAppName(TRUE);

....
log.StatusOut("%s, %4.2f complete", pProcedureName, fPercentComplete);
....
log.StatusOut("The thingy returned %d but I was expecting %d", 
              iReturn, iExpected);
....
log.StatusOut("All hope is lost. %s has asked for %d %% of %d.", 
               lpsDummy, iPercent, iTotal);
...

That's it. Have fun.