Knowledge Base Nr: 00053 logger.cpp - http://www.swe-kaiser.de

Downloads:

Meldungen in Ringpuffer auf Platte mitloggen

  
/*
klasse die meldungen mitloggt. es wird nur geloggt wenn das verzeichnis existiert.
das datum wird an das logfile angehängt.
MAXLOGFILES logfiles werden erzeugt danach wird von vorne anfangend wieder ueberschrieben (ringpuffer).
über setLogLevel(nLogLevel) kann gefiltert werden (siehe defines LOGxxxx (können verodert werden)).
setDebugLevel() stellt ein ob eine messagebox angezeigt werden soll
LOGALL (LOGERR|LOGWARN|LOGDATA|LOGINFO) loggt alle meldungen mit.
*/

#define LOGERR 0x01
#define LOGWARN 0x02
#define LOGDATA 0x04
#define LOGINFO 0x08
#define LOGPROGERR 0x10 //logische fehler im programm
#define LOGALL (LOGERR|LOGWARN|LOGDATA|LOGINFO|LOGPROGERR)

class CLog
{
public:
CLog(const char* lpszLogFilePath, const char* lpszFileName, const int MAXLOGFILES = 10, int nLogLevel = LOGALL, int nDebugLevel = LOGALL);
~CLog();

// nLevel: siehe defines LOGxxxx (können verodert werden)
void setLogLevel(int nLevel = LOGALL) { m_nLogLevel = nLevel; }
int getLogLevel() { return m_nLogLevel; }

void setDebugLevel(int nLevel = 0) { m_nDebugLevel = nLevel; }
int getDebugLevel() { return m_nDebugLevel; }
// nLevel: siehe defines LOGxxxx (können verodert werden)

int logMessage(char nLogType, const char* szFormat, ...);

FILE* getLogfileFp() { return m_fp; }
void setLogFileFp(FILE* fp) { close(); m_fp = fp; }
void close();

void showLogFile();
void logVersion();

protected:
int logString(const char* szString);

private:
char m_szFileName[200];
FILE* m_fp;
char m_nLogLevel;
char m_nDebugLevel;
};