Rev 9 | Rev 50 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#pragma once
#include "../Utils/StringList.h"
#include <vector>
#include <stdarg.h>
typedef struct {
Utils::String sText;
int iLevel;
} SLog;
class SPKEXPORT CLog
{
public:
typedef CLinkList<SLog> LogList;
typedef CListNode<SLog>* LogNode;
enum LogLevel {
Log_All = 0,
Log_Normal = 1,
Log_IO = 2,
Log_EditPackage = 4,
Log_File = 8,
Log_Read = 16,
};
protected:
// private constructor
CLog(void);
virtual ~CLog(void);
private:
LogList m_lLogs;
public:
static CLog *m_pInstance;
static CLog *create();
static void release();
static void log(int iLevel, const Utils::String &sLogText);
static void logf(int iLevel, const char *sLogText, ...);
void _log(int iLevel, const Utils::String &sLogText);
void _logf(int iLevel, const char *sLogText, ...);
virtual void displayLog(int iLevel, const Utils::String &sLogText) const;
void clear();
const SLog *firstLog() const;
int count() const;
};
//TODO: move this
class SPKEXPORT CConsoleLog : public CLog
{
public:
static CLog *create()
{
if ( !CLog::m_pInstance ) {
CLog::m_pInstance = new CConsoleLog();
}
return CLog::m_pInstance;
}
virtual ~CConsoleLog(void)
{
}
virtual void displayLog(int iLevel, const Utils::String &sLogText) const
{
printf("%s\n", sLogText.c_str());
}
};