CSAStatusLog - status logger






4.38/5 (8 votes)
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::Format
s or sprintf
s 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.