Вы можете написать собственный легкий регистратор или, возможно, сторонний open source ...
Например, 3-я часть C ++ logger [http://logging.apache.org/log4cxx/]
А вот простой [глючный] собственный регистратор [ Из книги C ++ Методы экономии времени для чайников]
#ifndef __SimpleLogger__
#define __SimpleLogger__
#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdarg.h>
#include <fstream>
using namespace std;
class SimpleLogger
{
public:
SimpleLogger( void )
{
bOn = false;
bForceFlush = false;
}
SimpleLogger( const char *strFileName )
{
sFileName = strFileName;
bOn = false;
bForceFlush = false;
}
SimpleLogger( const SimpleLogger& aCopy )
{
sFileName = aCopy.sFileName;
bForceFlush = aCopy.bForceFlush;
setOn( aCopy.bOn );
}
virtual ~SimpleLogger()
{
Flush();
if ( bOn )
file.close();
}
void setOn( bool flag )
{
bOn = flag;
if ( bOn )
{
file.open( sFileName.c_str() ,fstream::in | fstream::out | fstream::app);
}
}
bool getOn( void )
{
return bOn;
}
void setForceFlush( bool flag )
{
bForceFlush = flag;
}
bool getForceFlush( void )
{
return bForceFlush;
}
void setFileName ( const char
*strFileName )
{
sFileName = strFileName;
}
string getFileName ( void )
{
return sFileName;
}
void Log( const char *strMessage )
{
sMessage += strMessage;
sMessage += "\n";
if ( bForceFlush )
Flush();
}
void LogString( const char *fmt, ... )
{
char szBuffer[256];
va_list marker;
va_start( marker, fmt );
vsprintf(szBuffer, fmt, marker );
sMessage += szBuffer;
sMessage += "\n";
if ( bForceFlush )
Flush();
}
void Flush( void )
{
if ( bOn )
file << sMessage << endl;
sMessage = "";
}
private:
bool bOn;
bool bForceFlush;
string sMessage;
string sFileName;
ofstream file;
};
#endif
Использование:
SimpleLogger logger("MyLog.txt");
logger.setForceFlush( true );
logger.setOn(true);
logger.Log("I am the buggy logger");
Предупреждение : Это«игрушечный» логгер с некоторыми ошибками, чтобы дать вам некоторое представление о кастомном логгере ... Не использовать напрямую в реальных приложениях ..