1 #ifndef CARMA_UTIL_TRACE_H
2 #define CARMA_UTIL_TRACE_H
13 #include "carma/util/FacilityType.h"
27 #define CARMA_TRACELINE " From " << __FILE__ << ":" << __LINE__ << ": "
37 #define CARMA_TRACE(traceObject, priorityLevel, message) \
39 carma::util::Trace * const carmaUtilTraceTO = traceObject; \
40 const carma::util::Trace::TraceLevel carmaUtilTracePL = priorityLevel; \
42 if ( (carmaUtilTraceTO != 0) && \
43 (carmaUtilTraceTO->willWrite( carmaUtilTracePL )) ) { \
44 ::std::ostringstream carmaUtilTraceOss; \
46 carmaUtilTraceOss << CARMA_TRACELINE << message; \
48 carmaUtilTraceTO->write( carmaUtilTracePL, carmaUtilTraceOss ); \
59 #define CARMA_CPTRACE(priorityLevel, message) \
61 const carma::util::Trace::TraceLevel carmaUtilTracePL = priorityLevel; \
62 carma::util::Trace * const carmaUtilTraceTO = \
63 carma::util::Trace::getProgramTraceIfWillWrite( carmaUtilTracePL ); \
65 if ( carmaUtilTraceTO != 0 ) { \
66 ::std::ostringstream carmaUtilTraceOss; \
68 carmaUtilTraceOss << CARMA_TRACELINE << message; \
70 carmaUtilTraceTO->write( carmaUtilTracePL, carmaUtilTraceOss ); \
78 #define CPTRACE(priorityLevel, message) CARMA_CPTRACE(priorityLevel, message)
149 const std::string& traceDestination,
bool traceVerbose=
true,
150 const std::string& objectName=
"Trace",
164 getProgramTraceIfWillWrite(
TraceLevel traceLevel );
183 void writeStdout(
const std::ostringstream &debugMessage);
189 void writeFile(
const std::string& debugMessage);
195 void writeFile(
const std::ostringstream &debugMessage);
207 void writeSysLog(
const std::ostringstream &debugMessage);
223 void write(
TraceLevel traceLevel,
const std::ostringstream &debugMessage);
231 return traceDestination_;
234 bool willWrite(
TraceLevel traceLevel )
const;
239 const ::std::string systemNodeName_;
249 const bool traceVerbose_;
252 log4cpp::Category & sysLogCategory;
253 log4cpp::Category & fileCategory;
254 log4cpp::Category & ostreamCategory;
257 void stdoutMethod(
const std::string & debugMessage);
258 void fileMethod(
const std::string & debugMessage);
259 void sysLogMethod(
const std::string & debugMessage);
260 void writeMethod(
TraceLevel traceLevel,
const std::string & debugMessage);
273 inline void Trace::write(
const std::string& debugMessage) {}
274 inline void Trace::write(
const std::ostringstream &debugMessage) {}
279 stdoutMethod(debugMessage);
284 stdoutMethod(debugMessage.str());
289 fileMethod(debugMessage);
294 fileMethod(debugMessage.str());
299 sysLogMethod(debugMessage);
304 sysLogMethod(debugMessage.str());
308 const std::string& debugMessage)
310 writeMethod(traceLevel, debugMessage);
314 const std::ostringstream &debugMessage)
316 writeMethod(traceLevel, debugMessage.str());
319 #endif // #ifndef TRACE_ON
324 #endif // #ifndef CARMA_UTIL_TRACE_H
void writeFile(const std::string &debugMessage)
Send trace messages to a file.
void writeStdout(const std::string &debugMessage)
Send trace messages to standard output.
TraceDestination
Enumeration of possible output destinations.
TraceLevel
These values are the indices for the private priorities array, which corresponds directly to log4cpp/...
void writeSysLog(const std::string &debugMessage)
Send trace messages to syslog.
void write(TraceLevel traceLevel, const std::string &debugMessage)
Generic output method, output will go to destination specified in constructor.
static carma::util::Trace * getProgramTrace()
Trace(TraceLevel traceLevel, const std::string &traceDestination, bool traceVerbose=true, const std::string &objectName="Trace", carma::util::facilityType facility=DEFAULT_FACILITY)
Constructor.
void setObjectTraceLevel(const TraceLevel traceLevel)
method allowing traceLevel to be modified
facilityType
A type for syslog facilities.
TraceDestination getDestination() const
The Trace class provides an efficient means for managing debug statements throughout CARMA code...