My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
LogStream.h
Go to the documentation of this file.
1 #ifndef GCP_UTIL_LOGSTREAM_H
2 #define GCP_UTIL_LOGSTREAM_H
3 
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <string>
7 #include <iostream>
8 #include <sstream>
9 #include <string>
10 
18 namespace gcp {
19  namespace util {
20 
21  class LogStream : public std::ostringstream {
22  public:
23 
27  LogStream();
28 
32  LogStream(std::string message, std::string fileName,
33  int lineNo, std::string functionName,
34  bool isError, bool usePrefix);
35 
39  LogStream(std::ostringstream os, std::string fileName,
40  int lineNo, std::string functionName,
41  bool isError, bool usePrefix);
42 
46  virtual ~LogStream();
47 
51  void setLogStreamMessage(std::string message,
52  std::string fileName, int lineNo,
53  std::string functionName,
54  bool isError,
55  bool usePrefix);
56 
60  void setLogStreamMessage(std::ostringstream& os,
61  std::string fileName, int lineNo,
62  std::string functionName,
63  bool isError,
64  bool usePrefix);
65 
69  void appendLogStreamMessage(std::string message,
70  std::string fileName,
71  int lineNo,
72  std::string functionName,
73  bool isError,
74  bool usePrefix);
75 
79  void appendLogStreamMessage(std::ostringstream& os,
80  std::string fileName, int lineNo,
81  std::string functionName,
82  bool isError,
83  bool usePrefix);
87  void initLogStreamMessage(std::string fileName, int lineNo,
88  std::string functionName,
89  bool isError,
90  bool usePrefix);
91 
95  void setSysLogStreamError(std::string sysFunction,
96  std::string fileName,
97  int lineNo,
98  std::string functionName,
99  bool isError,
100  bool usePrefix);
104  void appendSysLogStreamError(std::string sysFunction,
105  std::string fileName,
106  int lineNo,
107  std::string functionName,
108  bool isError,
109  bool usePrefix);
113  std::string getMessage();
114 
118  bool isError();
119 
123  void clear();
124 
128  void finish();
129 
133  void report();
134 
138  void log();
139 
140  private:
141 
142  bool isError_;
143 
144  void addPrefix(int lineNo, std::string functionName);
145 
146  }; // End class LogStream
147 
148  }; // End namespace util
149 }; // End namespace gcp
150 
151 // These have to be macros, or else the FILE, LINE, etc. macros won't
152 // work. Ie, if __FILE__, etc. were simply set as default arguments
153 // to setMessage() for example, the expanded macros would refer to the
154 // context in this file, not the context where the call is made,
155 // defeating the purpose of those macros!
156 
157 #ifdef LogStr
158 #undef LogStr
159 #endif
160 
161 #define LogStr(isErr, message) LogStream((message), __FILE__, __LINE__, \
162 __PRETTY_FUNCTION__, isErr, true)
163 
164 #ifdef setMessage
165 #undef setMessage
166 #endif
167 
168 #define setMessage(isErr, message) setLogStreamMessage((message), \
169 __FILE__, __LINE__, __PRETTY_FUNCTION__, isErr, true)
170 
171 #ifdef appendMessage
172 #undef appendMessage
173 #endif
174 
175 #define appendMessage(isErr, message) appendLogStreamMessage((message), \
176 __FILE__, __LINE__, __PRETTY_FUNCTION__, isErr, true)
177 
178 #ifdef initMessage
179 #undef initMessage
180 #endif
181 
182 #define initMessage(isErr) initLogStreamMessage(__FILE__, __LINE__, \
183 __PRETTY_FUNCTION__, isErr, true)
184 
185 #ifdef setSysError
186 #undef setSysError
187 #endif
188 
189 #define setSysError(isErr, sysFunction) setSysLogStreamError((sysFunction), \
190 __FILE__, __LINE__, __PRETTY_FUNCTION__, isErr, true)
191 
192 #ifdef appendSysError
193 #undef appendSysError
194 #endif
195 
196 #define appendSysError(isErr, sysFunction) \
197 appendSysLogStreamError((sysFunction), __FILE__, __LINE__, \
198 __PRETTY_FUNCTION__, isErr, true)
199 
200 #ifdef LogStrSimple
201 #undef LogStrSimple
202 #endif
203 
204 #define LogStrSimple(isErr, message) LogStream((message), __FILE__, __LINE__, \
205 __PRETTY_FUNCTION__, isErr, false)
206 
207 #ifdef setMessageSimple
208 #undef setMessageSimple
209 #endif
210 
211 #define setMessageSimple(isErr, message) setLogStreamMessage((message), \
212 __FILE__, __LINE__, __PRETTY_FUNCTION__, isErr, false)
213 
214 #ifdef appendMessageSimple
215 #undef appendMessageSimple
216 #endif
217 
218 #define appendMessageSimple(isErr, message) appendLogStreamMessage((message), \
219 __FILE__, __LINE__, __PRETTY_FUNCTION__, isErr, false)
220 
221 #ifdef initMessageSimple
222 #undef initMessageSimple
223 #endif
224 
225 #define initMessageSimple(isErr) initLogStreamMessage(__FILE__, __LINE__, \
226 __PRETTY_FUNCTION__, isErr, false)
227 
228 #ifdef setSysErrorSimple
229 #undef setSysErrorSimple
230 #endif
231 
232 #define setSysErrorSimple(isErr, sysFunction) setSysLogStreamError((sysFunction), \
233 __FILE__, __LINE__, __PRETTY_FUNCTION__, isErr, false)
234 
235 #ifdef appendSysErrorSimple
236 #undef appendSysErrorSimple
237 #endif
238 
239 #define appendSysErrorSimple(isErr, sysFunction) \
240 appendSysLogStreamError((sysFunction), __FILE__, __LINE__, \
241 __PRETTY_FUNCTION__, isErr, false)
242 
243 #endif // End #ifndef
void log()
Definition: LogStream.cc:217
bool isError()
Definition: LogStream.cc:55
void report()
Definition: LogStream.cc:194
void clear()
Definition: LogStream.cc:185
LogStream()
Definition: LogStream.cc:21
void appendSysLogStreamError(std::string sysFunction, std::string fileName, int lineNo, std::string functionName, bool isError, bool usePrefix)
Definition: LogStream.cc:160
void initLogStreamMessage(std::string fileName, int lineNo, std::string functionName, bool isError, bool usePrefix)
Definition: LogStream.cc:101
std::string getMessage()
Definition: LogStream.cc:176
virtual ~LogStream()
Definition: LogStream.cc:50
Definition: LogStream.h:21
void setSysLogStreamError(std::string sysFunction, std::string fileName, int lineNo, std::string functionName, bool isError, bool usePrefix)
Definition: LogStream.cc:143
void setLogStreamMessage(std::string message, std::string fileName, int lineNo, std::string functionName, bool isError, bool usePrefix)
void appendLogStreamMessage(std::string message, std::string fileName, int lineNo, std::string functionName, bool isError, bool usePrefix)
void finish()
Definition: LogStream.cc:63