Subversion Repositories spk

Rev

Rev 10 | Rev 84 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 10 Rev 50
Line 1... Line 1...
1
#pragma once
1
#pragma once
2
 
2
 
3
#include "../Utils/StringList.h"
3
#include "../Utils/StringList.h"
4
#include <vector>
4
#include <vector>
5
#include <stdarg.h>
5
#include <stdarg.h>
6
 
-
 
-
 
6
#include <fstream>
-
 
7
#include <time.h>
-
 
8
#include <sstream>
7
 
9
 
8
typedef struct {
10
typedef struct {
9
	Utils::String	sText;
11
	Utils::String	sText;
10
	int				iLevel;
12
	int				iLevel;
-
 
13
	int				iType;
11
} SLog;
14
} SLog;
12
 
15
 
13
class SPKEXPORT CLog
16
class SPKEXPORT CLog
14
{
17
{
15
public:
18
public:
16
	typedef CLinkList<SLog> LogList;
19
	typedef CLinkList<SLog> LogList;
17
	typedef CListNode<SLog>* LogNode;
20
	typedef CListNode<SLog>* LogNode;
18
 
21
 
19
	enum LogLevel {
22
	enum LogType {
20
		Log_All			= 0,
23
		Log_All			= -1,
-
 
24
		Log_None		= 0,
21
		Log_Normal		= 1,
25
		Log_Normal		= 1,
22
		Log_IO			= 2,
26
		Log_IO			= 2,
23
		Log_EditPackage = 4,
27
		Log_EditPackage = 4,
24
		Log_File		= 8,
28
		Log_File		= 8,
25
		Log_Read		= 16,
29
		Log_Read		= 16,
-
 
30
		Log_Install		= 32,
-
 
31
		Log_Uninstall	= 64,
26
	};
32
	};
27
 
33
 
28
protected:
34
protected:
29
	// private constructor
35
	// private constructor
30
	CLog(void);
36
	CLog(void);
31
	virtual ~CLog(void);
37
	virtual ~CLog(void);
32
 
38
 
33
private:
39
private:
34
	LogList	m_lLogs;
40
	LogList	m_lLogs;
-
 
41
	int		_iLevel;
-
 
42
	int		_iFilter;
-
 
43
	bool	_bSaveLog;
35
 
44
 
36
public:
45
public:
37
	static CLog *m_pInstance;
46
	static CLog *m_pInstance;
38
	static CLog *create();
47
	static CLog *create();
39
	static void release();
48
	static void release();
40
 
49
 
41
	static void log(int iLevel, const Utils::String &sLogText);
50
	static void log(LogType iType, int iLevel, const Utils::String &sLogText);
42
	static void logf(int iLevel, const char *sLogText, ...);
51
	static void logf(LogType iType, int iLevel, const char *sLogText, ...);
43
	void _log(int iLevel, const Utils::String &sLogText);
52
	void _log(LogType iType, int iLevel, const Utils::String &sLogText);
44
	void _logf(int iLevel, const char *sLogText, ...);
53
	void _logf(LogType iType, int iLevel, const char *sLogText, ...);
45
 
54
 
46
	virtual void displayLog(int iLevel, const Utils::String &sLogText) const;
55
	virtual void displayLog(LogType iType, int iLevel, const Utils::String &sLogText) const;
-
 
56
	void setLevel(int iLevel);
-
 
57
	void addFilter(int iType);
-
 
58
	void setFilter(int iFilter);
-
 
59
	void removeFilter(int iType);
-
 
60
	void clearFilter();
47
 
61
 
48
	void clear();
62
	void clear();
49
	const SLog *firstLog() const;
63
	const SLog *firstLog() const;
50
	int count() const;
64
	int count() const;
51
};
65
};
Line 55... Line 69...
55
{
69
{
56
public:
70
public:
57
	static CLog *create()
71
	static CLog *create()
58
	{
72
	{
59
		if ( !CLog::m_pInstance ) {
73
		if ( !CLog::m_pInstance ) {
60
			CLog::m_pInstance = new CConsoleLog();
74
			CLog::m_pInstance = new CConsoleLog();
-
 
75
		}
-
 
76
		return CLog::m_pInstance;
-
 
77
	}
-
 
78
 
-
 
79
	virtual ~CConsoleLog(void)
-
 
80
	{
-
 
81
	}
-
 
82
	virtual void displayLog(LogType iType, int iLevel, const Utils::String &sLogText) const
-
 
83
	{
-
 
84
		printf("%s\n", sLogText.c_str());
-
 
85
	}
-
 
86
};
-
 
87
 
-
 
88
class SPKEXPORT CFileLog : public CLog 
-
 
89
{
-
 
90
private:
-
 
91
	Utils::String _sFilename;
-
 
92
 
-
 
93
public:
-
 
94
	static CLog *create()
-
 
95
	{
-
 
96
		if ( !CLog::m_pInstance ) {
-
 
97
			CLog::m_pInstance = new CFileLog();
61
		}
98
		}
62
		return CLog::m_pInstance;
99
		return CLog::m_pInstance;
63
	}
100
	}
-
 
101
 
-
 
102
	void setFile(const Utils::String &sFileName)
-
 
103
	{
-
 
104
		_sFilename = sFileName;
-
 
105
	}
64
 
106
 
65
	virtual ~CConsoleLog(void)
107
	virtual ~CFileLog(void)
-
 
108
	{
-
 
109
	}
-
 
110
	virtual void displayLog(LogType iType, int iLevel, const Utils::String &sLogText) const
66
	{
111
	{
-
 
112
		_writeLog(iType, sLogText);
67
	}
113
	}
-
 
114
 
-
 
115
private:
68
	virtual void displayLog(int iLevel, const Utils::String &sLogText) const
116
	void _writeLog(int iType, const Utils::String &sLogText) const;
69
	{
-
 
70
		printf("%s\n", sLogText.c_str());
117
	Utils::String _timeStamp() const;
71
	}
-
 
-
 
118
	Utils::String _formatTime(int iValue) const;
-
 
119
	Utils::String _typeName(int iType) const;
72
};
120
};