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 :
void Init(const char *pOutputFilename);
BOOL StatusOut(const char* fmt, ...);
void Enable(BOOL bEnable);
void PrintTime(BOOL b);
void PrintAppName(BOOL b);
void SetAppName(const char *pName);
Use it like this
CSAStatusLog log;
....
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.