Subversion Repositories spk

Rev

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

Rev 10 Rev 50
Line 4... Line 4...
4
 
4
 
5
CLog::CLog()
5
CLog::CLog() : _iLevel(0), _iFilter(0), _bSaveLog(0)
6
{
6
{
7
}
7
}
8
 
8
 
9
CLog::~CLog()
9
CLog::~CLog()
10
{
10
{
Line 24... Line 24...
24
		delete m_pInstance;
24
		delete m_pInstance;
25
	}
25
	}
26
	m_pInstance = 0;
26
	m_pInstance = 0;
27
}
27
}
28
 
28
 
29
void CLog::log(int iLevel, const Utils::String &sLogText)
29
void CLog::log(LogType iType, int iLevel, const Utils::String &sLogText)
30
{
30
{
31
	CLog *pLogger = CLog::create();
31
	CLog *pLogger = CLog::create();
32
	pLogger->_log(iLevel, sLogText);
32
	pLogger->_log(iType, iLevel, sLogText);
33
}
33
}
34
 
34
 
35
void CLog::displayLog(int iLevel, const Utils::String &sLogText) const
35
void CLog::addFilter(int iType)
36
{
36
{
-
 
37
	_iFilter |= iType;
37
}
38
}
38
 
39
 
39
void CLog::_log(int iLevel, const Utils::String &sLogText)
40
void CLog::setFilter(int iFilter)
40
{
41
{
-
 
42
	_iFilter = iFilter;
-
 
43
}
-
 
44
 
-
 
45
void CLog::removeFilter(int iType)
-
 
46
{
-
 
47
	_iFilter &= ~(iType);
-
 
48
}
-
 
49
 
-
 
50
void CLog::clearFilter()
-
 
51
{
-
 
52
	_iFilter = 0;
-
 
53
}
-
 
54
 
-
 
55
void CLog::displayLog(LogType iType, int iLevel, const Utils::String &sLogText) const
-
 
56
{
-
 
57
}
-
 
58
 
-
 
59
void CLog::_log(LogType iType, int iLevel, const Utils::String &sLogText)
-
 
60
{
-
 
61
	if ( iLevel > _iLevel ) return;
-
 
62
	if ( !(_iFilter & iType) ) return;
-
 
63
 
-
 
64
	if ( _bSaveLog ) {
41
	SLog *newLog = new SLog;
65
		SLog *newLog = new SLog;
42
	newLog->sText = sLogText;
66
		newLog->sText = sLogText;
43
	newLog->iLevel = iLevel;
67
		newLog->iLevel = iLevel;
-
 
68
		newLog->iType = iType;
44
	m_lLogs.push_back(newLog);
69
		m_lLogs.push_back(newLog);
-
 
70
	}
-
 
71
 
-
 
72
	this->displayLog(iType, iLevel, sLogText);
-
 
73
}
-
 
74
 
-
 
75
void CLog::logf(LogType iType, int iLevel, const char *sLogText, ...)
-
 
76
{
-
 
77
	char buffer[10000];
-
 
78
	va_list args;
-
 
79
	va_start (args, sLogText);
-
 
80
	vsprintf (buffer, sLogText, args);
-
 
81
	va_end (args);
45
 
82
 
46
	this->displayLog(iLevel, sLogText);
83
	CLog::log(iType, iLevel, buffer);
47
}
84
}
48
 
-
 
49
void CLog::logf(int iLevel, const char *sLogText, ...)
-
 
50
{
-
 
51
	char buffer[10000];
-
 
52
	va_list args;
-
 
53
	va_start (args, sLogText);
-
 
54
	vsprintf (buffer, sLogText, args);
-
 
55
	va_end (args);
-
 
56
 
-
 
57
	CLog::log(iLevel, buffer);
-
 
58
}
-
 
59
void CLog::_logf(int iLevel, const char *sLogText, ...)
85
void CLog::_logf(LogType iType, int iLevel, const char *sLogText, ...)
60
{
86
{
61
	char buffer[10000];
87
	char buffer[10000];
62
	va_list args;
88
	va_list args;
63
	va_start (args, sLogText);
89
	va_start (args, sLogText);
64
	vsprintf (buffer, sLogText, args);
90
	vsprintf (buffer, sLogText, args);
65
	va_end (args);
91
	va_end (args);
66
 
92
 
67
	this->_log(iLevel, buffer);
93
	this->_log(iType, iLevel, buffer);
68
}
94
}
69
 
95
 
-
 
96
void CLog::setLevel(int iLevel)
-
 
97
{
-
 
98
	_iLevel = iLevel;
-
 
99
}
-
 
100
 
70
void CLog::clear()
101
void CLog::clear()
71
{
102
{
72
	m_lLogs.clear(true);
103
	m_lLogs.clear(true);
73
}
104
}
74
	
105
	
75
const SLog *CLog::firstLog() const
106
const SLog *CLog::firstLog() const
76
{
107
{
77
	if ( !m_lLogs.Front() ) return NULL;
108
	if ( !m_lLogs.Front() ) return NULL;
78
	return m_lLogs.Front()->Data();
109
	return m_lLogs.Front()->Data();
79
}
110
}
80
 
111
 
81
int CLog::count() const
112
int CLog::count() const
-
 
113
{
-
 
114
	return m_lLogs.size();
-
 
115
}
-
 
116
 
-
 
117
/////////////////////////////////////////////////////////////////////////////
-
 
118
//	File Log
-
 
119
///////////////////
-
 
120
 
-
 
121
void CFileLog::_writeLog(int iType, const Utils::String &sLogText) const
-
 
122
{
-
 
123
	std::ofstream outFile;
-
 
124
	outFile.open(_sFilename, std::ios::out | std::ios::app);
-
 
125
	if ( outFile.is_open() ) {
-
 
126
		outFile << _timeStamp() << " (" << _typeName(iType) << ") " << sLogText << std::endl;
-
 
127
		outFile.close();
-
 
128
	}
-
 
129
}
-
 
130
 
-
 
131
Utils::String CFileLog::_timeStamp() const
-
 
132
{
-
 
133
	std::stringstream strm;
-
 
134
	time_t T = time(NULL);
-
 
135
	struct tm *TM = localtime(&T);
-
 
136
	strm << "[" << Utils::String::PadNumber(TM->tm_mday, 2) << "/" << Utils::String::PadNumber(TM->tm_mon+1, 2) << "/" << TM->tm_year+1900 << " - " << Utils::String::PadNumber(TM->tm_hour, 2) << ":" << Utils::String::PadNumber(TM->tm_min, 2) << ":" << Utils::String::PadNumber(TM->tm_sec, 2) << "]";
-
 
137
	return strm.str();
-
 
138
}
-
 
139
 
-
 
140
Utils::String CFileLog::_typeName(int iType) const
82
{
141
{
-
 
142
	switch(iType) {
-
 
143
		case Log_Install: return "INSTALL";
-
 
144
		case Log_Uninstall: return "UNINSTALL";
-
 
145
	}
83
	return m_lLogs.size();
146
	return "";
84
}
147
}