Orocos Real-Time Toolkit
2.5.0
|
A simple logging class to debug/ analyse what is going on in the Orocos system. More...
#include <rtt/Logger.hpp>
Classes | |
struct | D |
This hidden struct stores all data structures required for logging. More... | |
struct | In |
Notify the Logger in which 'module' the message occured. More... | |
Public Types | |
enum | LogLevel { Never = 0, Fatal, Critical, Error, Warning, Info, Debug, RealTime } |
Enumerate all log-levels from absolute silence to everything. More... | |
typedef std::ostream &(* | LogFunction )(std::ostream &) |
Function signature of the functions that influence the log stream. | |
Public Member Functions | |
os::TimeService::ticks | getReferenceTime () const |
Function to get the loggers starting timestamp. | |
void | allowRealTime () |
Allow messages of the LogLevel 'RealTime' to appear on the console. | |
void | disallowRealTime () |
Disallow messages of the LogLevel 'RealTime' to appear on the console. | |
void | mayLogStdOut (bool tf) |
Toggles the flag if the logger may log to the standard output stream. | |
void | mayLogFile (bool tf) |
Toggles the flag if the logger may log to the file stream. | |
Logger & | in (const std::string &modname) |
Inform the Logger of the entry of a module. | |
Logger & | out (const std::string &modname) |
The counterpart of in(). | |
std::string | getLogModule () const |
Get the name of the current Log generating Module. | |
void | startup () |
Print a 'welcome' string in Info and reset log timestamp. | |
void | shutdown () |
Print a 'goodbye' string in Info, Flush all streams and stop Logging. | |
std::string | getLogLine () |
This method gets all messages upto level Info and can be freely read by the user, removing the line from an internal buffer of Logger. | |
void | setStdStream (std::ostream &stdos) |
Set the standard output stream. | |
template<class T > | |
Logger & | operator<< (T t) |
Send (user defined) data into this logger. | |
Logger & | operator<< (LogLevel ll) |
Set the loglevel of the incomming messages. | |
Logger & | operator<< (const std::string &) |
Log a string. | |
Logger & | operator<< (const char *) |
Log a text message. | |
Logger & | operator<< (std::ostream &(*pf)(std::ostream &)) |
Catch the std::endl and other stream manipulators. | |
void | setLogLevel (LogLevel ll) |
Set the loglevel of the outgoing (streamed) messages. | |
LogLevel | getLogLevel () const |
Return the current output loglevel. | |
void | logflush () |
Flush log buffers. | |
void | logendl () |
Add endl and flush buffers. | |
void | lognl () |
Add newline without flushing buffers. | |
Static Public Member Functions | |
static std::ostream & | nl (std::ostream &__os) |
Insert a newline ' ' in the ostream. | |
static std::ostream & | endl (std::ostream &__os) |
static std::ostream & | flush (std::ostream &__os) |
Flush the output stream. | |
static Logger * | Instance (std::ostream &str=std::cerr) |
Get the singleton logger. | |
static void | Release () |
Delete the singleton logger. | |
static Logger & | log () |
As Instance(), but more userfriendly. | |
static Logger & | log (LogLevel ll) |
As log(), but also specify the LogLevel of the next message. |
A simple logging class to debug/ analyse what is going on in the Orocos system.
You MUST NOT use this logger in a HARD realtime task or thread.
You can disable all logging at compile time by defining OROBLD_DISABLE_LOGGING (not advised for normal usage). This class can log to a console, and/or to a file and/or to an internal buffer which may be emptied by another class. This is decided upon compile time and can not be changed during runtime. Both printf/iostream are supported.
Example Usage :
Logger::log() << Logger::Error << "An error Occured !" << Logger::endl; Logger::log() << Logger::Debug << "All debug info ..." << Logger::endl; *
When the application is started, set the displayed loglevel with setLogLevel() with a LogLevel parameter. The default is Warning. Set the desired log streams ( a file or std output ) with logToStream() and setStdStream(). Additionally, an orocos.log which is always logs at log level 'Info'.
If you set an environment variable ORO_LOGLEVEL=0..6, this value will be used to determine the output level until overriden by the application (if so). The ORO_LOGLEVEL has the same effect on the 'orocos.log' file, but can not lower it below "Info".
Logger::log().allowRealTime();
Definition at line 95 of file Logger.hpp.
Enumerate all log-levels from absolute silence to everything.
Definition at line 121 of file Logger.hpp.
Logger & RTT::Logger::in | ( | const std::string & | modname | ) |
Inform the Logger of the entry of a module.
Definition at line 384 of file Logger.cpp.
Logger * RTT::Logger::Instance | ( | std::ostream & | str = std::cerr | ) | [static] |
Get the singleton logger.
Definition at line 72 of file Logger.cpp.
Referenced by startup().
void RTT::Logger::logendl | ( | ) |
Add endl and flush buffers.
Will always log at least one line.
Definition at line 570 of file Logger.cpp.
References RTT::Logger::D::logit().
Referenced by operator<<().
void RTT::Logger::logflush | ( | ) |
Flush log buffers.
May log nothing if empty.
Definition at line 540 of file Logger.cpp.
Referenced by operator<<(), and shutdown().
void RTT::Logger::lognl | ( | ) |
Add newline without flushing buffers.
If you need to log a lot of lines, this is advised with a flush or endl at the end.
Definition at line 564 of file Logger.cpp.
References RTT::Logger::D::logit(), and nl().
Referenced by operator<<().
std::ostream & RTT::Logger::nl | ( | std::ostream & | __os | ) | [static] |
Insert a newline '
' in the ostream.
(Why is this not in the standard ?)
Definition at line 343 of file Logger.cpp.
Referenced by RTT::corba::TaskContextProxy::DestroyOrb(), RTT::extras::SimulationThread::initialize(), RTT::corba::ApplicationServer::InitOrb(), RTT::scripting::ScriptingService::loadFunctions(), RTT::scripting::ScriptingService::loadPrograms(), RTT::scripting::ScriptingService::loadStateMachines(), lognl(), operator<<(), startup(), RTT::corba::TaskContextProxy::TaskContextProxy(), RTT::scripting::ScriptingService::unloadProgram(), and RTT::scripting::ScriptingService::unloadStateMachine().
Logger & RTT::Logger::operator<< | ( | T | t | ) |
Send (user defined) data into this logger.
All data with lower priority than the current loglevel will be discarded. If any loglevel (thus in or out) is set to Never, it will never be displayed. You must flush() or end with std::endl to get the log's output in your file or display.
Definition at line 15 of file Logger.inl.
References mayLogFile(), and mayLogStdOut().
Referenced by operator<<().
Logger & RTT::Logger::operator<< | ( | const std::string & | t | ) |
Log a string.
This is equivalent to the templated operator<<, but reduces code size since it is compiled only once.
Definition at line 507 of file Logger.cpp.
References operator<<().
Logger & RTT::Logger::operator<< | ( | const char * | t | ) |
Log a text message.
This is equivalent to the templated operator<<, but reduces code size since it is compiled only once.
Definition at line 491 of file Logger.cpp.
Logger & RTT::Logger::out | ( | const std::string & | modname | ) |
The counterpart of in().
Definition at line 391 of file Logger.cpp.
void RTT::Logger::setLogLevel | ( | LogLevel | ll | ) |
Set the loglevel of the outgoing (streamed) messages.
All messages with this level or higher importance will be displayed. For example, setting to Logger::Debug will print everyting, setting to Logger::Critical will only print critical or fatal errors.
Definition at line 576 of file Logger.cpp.
void RTT::Logger::setStdStream | ( | std::ostream & | stdos | ) |