aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/include/LTKLogger.h
blob: e0594d90b2aa0165af1c0c8d01a736290941f59d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/*****************************************************************************************
* Copyright (c) 2007 Hewlett-Packard Development Company, L.P.
* Permission is hereby granted, free of charge, to any person obtaining a copy of 
* this software and associated documentation files (the "Software"), to deal in 
* the Software without restriction, including without limitation the rights to use, 
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the 
* Software, and to permit persons to whom the Software is furnished to do so, 
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all 
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
*****************************************************************************************/

/************************************************************************
 * SVN MACROS
 *
 * $LastChangedDate: 2007-09-12 15:47:40 +0530 (Wed, 12 Sep 2007) $
 * $Revision: 188 $
 * $Author: sharmnid $
 *
 ************************************************************************/
/************************************************************************
 * FILE DESCR: Definition of the Debug Logging Module
 *
 * CONTENTS:   
 *
 * AUTHOR:     Balaji R.
 *
 * DATE:       December 23, 2004
 * CHANGE HISTORY:
 * Author		Date			Description of change
 ************************************************************************/

#ifndef LTKLOGGER_H
#define LTKLOGGER_H

#include "LTKInc.h"
#include "LTKLoggerInterface.h"

/**
* @ingroup util
*/

/** @brief A concrete class that implements the logger interface
* @class LTKLogger 
*/
class LTKLogger : public LTKLoggerInterface 
{

private:

	 EDebugLevel m_debugLevel;	//	log level which determines which log messages are to be written into the file

	 string m_logFileName;		//	name of the log file

	 ofstream m_logFile;		//	file pointer to the log file

	 ofstream m_ofstream;		//  used to ignore messages with priority lower than defined by application

	 ELogStatus m_logStatus;	//	status of logging - active or inactive

	 bool m_isTimeStamped;		//	flag to indicate if time is to be printed on the log file along with log message

     static LTKLoggerInterface* loggerInstance;

	/**
	 * This is a  method which writes auxiliary information like date, time and line number
	 * into the log file
	 * @param lineNumber - line number of the log message
	 * @return SUCCESS on successful writing of auxiliary information into log file
	 */

	 int writeAuxInfo(const string& fileName, int lineNumber);

    /**
	* @name Constructors and Destructor
	*/

	// @{

	/**
	 * Default Constructor
	 */

	LTKLogger();

public:

	static void destroyLoggerInstance();

    static LTKLoggerInterface* getInstance();

	/**
	* Destructor
	*/

	virtual ~LTKLogger();

	// @}

	/**
	 * @name Function call operator
	 */
	//@{

	/**
	 * Function call operator
	 * @param debugLevel reference to the log level of the message
	 * @param lineNumber source code line number of the log message
	 *
	 * @return reference to an output stream object
	 */
	
	ostream& operator()(const EDebugLevel& debugLevel, const string& fileName, int lineNumber = 0);
	
	// @}
	
	/**
	 * @name Methods
	 */

	// @{

	/**
	 * This is a  method sets the log level of the messages to be considered for 
	 * redirecting to the log file
	 * @param debugLevel log level of the messages to be considered
	 * @return SUCCESS on successful set operation
	 */

	 int setLogLevel(const EDebugLevel& debugLevel);

	/**
	 * This is a  method sets the name of the log file to be used
	 * @param logFileName Name of the log file to be used for logging
	 * @param traceGroup trace group into which the ink file has to be read into
	 * @return SUCCESS on successful set operation
	 */

	 void setLogFileName(const string& logFileName);

	/**
	 * This is a  method which returns the log level of the messages to be considered for 
	 * redirecting to the log file
	 * @return the log level of the messages to be considered for redirecting to the log file
	 */

	 EDebugLevel getLogLevel();

	/**
	 * This is a  method which returns the name of the file logging is done into
	 * @return the name of the file logging is done into
	 */

	 const string& getLogFileName() ;

	/**
	 * This is a  method which starts the logging operation
	 * @return SUCCESS on successful start of logging
	 */

	 int startLog(bool timeStamp = true);

	 /**
	  * This method will stop the logging operation.
	  * @return SUCCESS on successful start of logging
	  */

	 int stopLog();

	// @}

	
};

#endif