/[PAMELA software]/chewbacca/PamOffLineSW/Logger.cpp
ViewVC logotype

Contents of /chewbacca/PamOffLineSW/Logger.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Tue Sep 23 07:20:10 2008 UTC (16 years, 2 months ago) by mocchiut
Branch: MAIN
Branch point for: v0r00
Initial revision

1 //============================================================================
2 // $Id: Logger.cpp,v 1.4 2008-03-05 11:36:27 messineo Exp $
3 // Description :
4 //============================================================================
5 #include "Logger.h"
6 #include <iostream>
7
8 namespace PamOffLineSW{
9
10 LogUtil::LogUtil(std::string& filename){
11 mtempstring="";
12 mFilename=filename;
13 mLevel=LogUtil::LOGERROR;
14 mOutStream.open(mFilename.c_str(), std::ios::binary);
15 }
16 LogUtil::LogUtil(char* filename){
17 mtempstring="";
18 mFilename=std::string(filename);
19 mLevel=LogUtil::LOGERROR;
20 mOutStream.open(mFilename.c_str(), std::ios::binary);
21 }
22 LogUtil::LogUtil(std::string& filename, logLevel level){
23 mtempstring="";
24 mFilename=filename;
25 mLevel=level;
26 mOutStream.open(mFilename.c_str(), std::ios::binary);
27 }
28 LogUtil::LogUtil(char* filename, logLevel level){
29 mtempstring="";
30 mFilename=std::string(filename);
31 mLevel=level;
32 mOutStream.open(mFilename.c_str(), std::ios::binary);
33 }
34 std::string& LogUtil::getLogFileName(){
35 return mFilename;
36 }
37 void LogUtil::setLoglevel(logLevel level){
38 mLevel=level;
39 }
40 void LogUtil::logError(std::string& msg){
41 if(!mOutStream.fail()){
42 mOutStream << "[Error] " << msg << std::endl;
43 }else{
44 std::cout << "[Error] " << msg << std::endl;
45 }
46 }
47 void LogUtil::logWarning(std::string& msg){
48 if(mLevel >= LogUtil::LOGWARN){
49 if(!mOutStream.fail()){
50 mOutStream << "[Warning] " << msg << std::endl;
51 }else{
52 std::cout << "[Warning] " << msg << std::endl;
53 }
54 }
55 }
56
57 void LogUtil::logInfo(std::string& msg){
58 if(mLevel >= LogUtil::LOGINFO){
59 if(!mOutStream.fail()){
60 mOutStream << "[Info] " << msg << std::endl;
61 }else{
62 std::cout << "[Info] " << msg << std::endl;
63 }
64 }
65 }
66
67 void LogUtil::logAll(std::string& msg){
68 if(mLevel >= LogUtil::LOGALL){
69 if(!mOutStream.fail()){
70 mOutStream << "[Debug:] " << msg << std::endl;
71 }else{
72 std::cout << "[Debug:] " << msg << std::endl;
73 }
74 }
75 }
76
77 void LogUtil::logAlways(std::string& msg){
78 if(!mOutStream.fail()){
79 mOutStream << "[LOG:] " << msg << std::endl;
80 }else{
81 std::cout << "[LOG:] " << msg << std::endl;
82 }
83
84 }
85
86 void LogUtil::logAlways(char* msg){
87 std::string tmp = msg;
88 logAlways(tmp);
89 }
90
91 void LogUtil::logError(char* msg){
92 std::string tmp = msg;
93 logError(tmp);
94 }
95 void LogUtil::logWarning(char* msg){
96 std::string tmp = msg;
97 logWarning(tmp);
98 }
99 void LogUtil::logInfo(char* msg){
100 std::string tmp = msg;
101 logInfo(tmp);
102 }
103
104 void LogUtil::logAll(char* msg){
105 std::string tmp = msg;
106 logAll(tmp);
107 }
108
109 LogUtil::~LogUtil(){
110 mOutStream.close();
111 }
112
113
114 const int Logger::OPEN_FILE_OPERATION = 1;
115 const int Logger::LOG_MSG_OPERATION = 2;
116 const int Logger::CLOSE_FILE_OPERATION = 3;
117
118 Logger::Logger(){
119 mAutoFlush = true;
120 mFileName = "";
121 //mOutStream = new std::ofstream();
122 initStringMsg();
123 }
124
125 Logger::Logger(bool autoflush){
126 mAutoFlush = autoflush;
127 mFileName = "";
128 //mOutStream = new std::ofstream();
129 initStringMsg();
130 }
131
132 Logger::~Logger(){
133 mOutStream.flush();
134 /*
135 if(mOutStream){
136 delete mOutStream;
137 }
138 */
139 }
140
141 void Logger::initStringMsg(){
142 mDummyOptionalMsg.assign("");
143 mBlankString.assign("");
144 mUnableToOpenFileMsg.assign("Unable to open file ");
145 mUnableToLogMsg.assign("Unable to log msg \"");
146 mToFileMsg.assign("\" to file ");
147 mUnableToCloseMsg.assign("Unable to close \"");
148 mFileMsg.assign("\" file ");
149 }
150 std::string& Logger::getLogFileName(){
151 return mFileName;
152 }
153
154 bool Logger::setLogFile(std::string& fileName){
155 mFileName.assign(fileName.c_str());
156 mOutStream.open(fileName.c_str(), std::ios::binary);
157 return checkOutFileStreamError(Logger::OPEN_FILE_OPERATION,mDummyOptionalMsg);
158 }
159
160 bool Logger::setLogFile(char* fileName){
161 mFileName.assign(fileName);
162 mOutStream.open(fileName, std::ios::binary);
163 return checkOutFileStreamError(Logger::OPEN_FILE_OPERATION,mDummyOptionalMsg);
164 }
165
166 std::ofstream& Logger::getOutStream(){
167 return mOutStream;
168 }
169
170 bool Logger::close(){
171 //std::string dummyOptionalMsg("");
172 /*
173 if(mOutStream){
174 mOutStream.close();
175 }
176 */
177 mOutStream.close();
178 return checkOutFileStreamError(Logger::CLOSE_FILE_OPERATION,mDummyOptionalMsg);
179 }
180
181
182
183 bool Logger::checkOutFileStreamError(int operation, std::string& optionalMsg){
184 if(mOutStream.fail()){
185 switch(operation){
186 case Logger::OPEN_FILE_OPERATION : {
187 mBlankString.assign(mUnableToOpenFileMsg.c_str());
188 mBlankString.append(mFileName);
189
190 }break;
191 case Logger::LOG_MSG_OPERATION : {
192 mBlankString.assign(mUnableToLogMsg.c_str());
193 mBlankString.append(optionalMsg.c_str());
194 mBlankString.append(mToFileMsg.c_str());
195 mBlankString.append(mFileName.c_str());
196 //msg+="Unable to log msg \"";
197 //msg+=optionalMsg;
198 //msg+="\" to file ";
199 //msg+=mFileName;
200 }break;
201 case Logger::CLOSE_FILE_OPERATION : {
202 mBlankString.assign(mUnableToCloseMsg.c_str());
203 mBlankString.append(optionalMsg.c_str());
204 mBlankString.append(mFileMsg.c_str());
205 mBlankString.append(mFileName.c_str());
206 };
207 }
208 ////MessageBox(NULL,msg.c_str(),"Error",MB_OK);
209 //mBlankString.assign("");//TOO optimisation needed
210 std::cout << mBlankString << std::endl;
211 return false;
212 }
213 else
214 return true;
215 }
216
217 bool Logger::checkOutFileStreamError(int operation)
218 {
219 if(mOutStream.fail()){
220 switch(operation){
221 case Logger::OPEN_FILE_OPERATION : {
222 mBlankString.assign(mUnableToOpenFileMsg.c_str());
223 mBlankString.append(mFileName);
224
225 }break;
226 case Logger::LOG_MSG_OPERATION : {
227 mBlankString.assign(mUnableToLogMsg.c_str());
228 mBlankString.append(mToFileMsg.c_str());
229 mBlankString.append(mFileName.c_str());
230
231 }break;
232 case Logger::CLOSE_FILE_OPERATION : {
233 mBlankString.assign(mUnableToCloseMsg.c_str());
234 mBlankString.append(mFileMsg.c_str());
235 mBlankString.append(mFileName.c_str());
236 };
237 }
238 std::cout << mBlankString << std::endl;
239 return false;
240 }
241 else
242 return true;
243 }
244
245 bool Logger::logENDL(){
246 mOutStream << std::endl;
247 return checkOutFileStreamError(Logger::LOG_MSG_OPERATION);
248 }
249
250 bool Logger::logMsg(std::string& msg){
251 mOutStream << msg;// << std::endl;
252 return checkOutFileStreamError(Logger::LOG_MSG_OPERATION, msg);
253 }
254
255 bool Logger::logMsg(char* charstar_nullterminated){
256 mOutStream << charstar_nullterminated;
257 return checkOutFileStreamError(Logger::LOG_MSG_OPERATION);
258 }
259
260 bool Logger::logMsg(char* charstar, int lenght){
261 mOutStream.write(charstar,lenght);
262 return checkOutFileStreamError(Logger::LOG_MSG_OPERATION);
263 }
264
265 bool Logger::logMsg(char* charstar, long int lenght){
266 mOutStream.write(charstar,lenght);
267 return checkOutFileStreamError(Logger::LOG_MSG_OPERATION);
268 }
269
270 }

  ViewVC Help
Powered by ViewVC 1.1.23