Fawkes API  Fawkes Development Version
fawkes::Logger Class Reference

Interface for logging. More...

#include <logging/logger.h>

Inheritance diagram for fawkes::Logger:

List of all members.

Public Types

enum  LogLevel {
  LL_DEBUG = 0, LL_INFO = 1, LL_WARN = 2, LL_ERROR = 4,
  LL_NONE = 8
}
 Log level. More...

Public Member Functions

 Logger (LogLevel log_level=LL_DEBUG)
 Constructor.
virtual ~Logger ()
 Virtual empty destructor.
virtual void set_loglevel (LogLevel level)
 Sets the log level.
virtual LogLevel loglevel ()
 Get log level.
virtual void log (LogLevel level, const char *component, const char *format,...)
 Log message of given log level.
virtual void log_debug (const char *component, const char *format,...)=0
 Log debug message.
virtual void log_info (const char *component, const char *format,...)=0
 Log informational message.
virtual void log_warn (const char *component, const char *format,...)=0
 Log warning message.
virtual void log_error (const char *component, const char *format,...)=0
 Log error message.
virtual void log (LogLevel level, const char *component, Exception &e)
 Log exception for given log level.
virtual void log_debug (const char *component, Exception &e)=0
 Log debug exception.
virtual void log_info (const char *component, Exception &e)=0
 Log informational exception.
virtual void log_warn (const char *component, Exception &e)=0
 Log warning exception.
virtual void log_error (const char *component, Exception &e)=0
 Log error exception.
virtual void vlog (LogLevel level, const char *component, const char *format, va_list va)
 Log message for given log level.
virtual void vlog_debug (const char *component, const char *format, va_list va)=0
 Log debug message.
virtual void vlog_info (const char *component, const char *format, va_list va)=0
 Log informational message.
virtual void vlog_warn (const char *component, const char *format, va_list va)=0
 Log warning message.
virtual void vlog_error (const char *component, const char *format, va_list va)=0
 Log error message.
virtual void tlog (LogLevel level, struct timeval *t, const char *component, const char *format,...)
 Log message of given log level and time.
virtual void tlog_debug (struct timeval *t, const char *component, const char *format,...)=0
 Log debug message for specific time.
virtual void tlog_info (struct timeval *t, const char *component, const char *format,...)=0
 Log informational message for specific time.
virtual void tlog_warn (struct timeval *t, const char *component, const char *format,...)=0
 Log warning message for specific time.
virtual void tlog_error (struct timeval *t, const char *component, const char *format,...)=0
 Log error message for specific time.
virtual void tlog (LogLevel level, struct timeval *t, const char *component, Exception &e)
 Log exception for given log level.
virtual void tlog_debug (struct timeval *t, const char *component, Exception &e)=0
 Log debug exception for specific time.
virtual void tlog_info (struct timeval *t, const char *component, Exception &e)=0
 Log informational exception for specific time.
virtual void tlog_warn (struct timeval *t, const char *component, Exception &e)=0
 Log warning exception for specific time.
virtual void tlog_error (struct timeval *t, const char *component, Exception &e)=0
 Log error exception for specific time.
virtual void vtlog (LogLevel level, struct timeval *t, const char *component, const char *format, va_list va)
 Log message for given log level and time.
virtual void vtlog_debug (struct timeval *t, const char *component, const char *format, va_list va)=0
 Log debug message for specific time.
virtual void vtlog_info (struct timeval *t, const char *component, const char *format, va_list va)=0
 Log informational message for specific time.
virtual void vtlog_warn (struct timeval *t, const char *component, const char *format, va_list va)=0
 Log warning message for specific time.
virtual void vtlog_error (struct timeval *t, const char *component, const char *format, va_list va)=0
 Log error message for specific time.

Protected Attributes

LogLevel log_level
 Minimum log level.

Detailed Description

Interface for logging.

This interface facilitates a way to collect all output, be it debugging output, informational output, warning or error messages.

There should be no need no more for usage of printf in the code but rather a logger should be used instead.

The LoggingAspect should be added to a Thread that has to log something (which is likely to be the case). For library use QuickLog is the recommended way of logging. Do NOT use these in plugins as it hides a dependency of this plugin.

A special note to logging hackers: A logger may never ever bounce. This means that not printing a message is ok in case of an internal error in the logger, but it may never indicate that error with an exception! If a logger cannot deliver the messages as it should be (like a network logger that cannot send because the connection is dead) it should at least dump it to stderr!

Loggers have to be fast - damn fast. If a lengthy operations is needed (like a network connection that may block) messages shall be enqueued and processed later (for example in a separate thread). This is because everywhere in the software (even in libraries like the utils) a logger may be used to log an error that occured (but which is not that critical that the application should die). In that case a logger which takes to long is absolutely the wrong thing because this would influence the performance of the whole software at unpredicted times - while if the operations are carried out at a specified time or in a separate thread they do not harm the performance.

Caution: The line between log_* methods and vlog_* methods is very thin. You can actually call log_info() with a va_list as the only variadic parameter in some cases. The call is syntactically correct, but the result is not what you intended. Thus make sure that you always use the vlog_* method if you pass along a va_list!


Member Enumeration Documentation

Log level.

Defines a level that can be used to determine the amount of output to generate in loggers. The log levels are strictly ordered (debug < info < warn < error < none) so loggers shall implement a facility to set a minimum logging level. Messages below that minimum log level shall be omitted.

Enumerator:
LL_DEBUG 

debug output, relevant only when tracking down problems

LL_INFO 

informational output about normal procedures

LL_WARN 

warning, should be investigated but software still functions, an example is that something was requested that is not available and thus it is more likely a user error

LL_ERROR 

error, may be recoverable (software still running) or not (software has to terminate).

This shall be used if the error is a rare situation that should be investigated.

LL_NONE 

use this to disable log output

Definition at line 45 of file logger.h.


Constructor & Destructor Documentation

fawkes::Logger::Logger ( LogLevel  log_level = LL_DEBUG)

Constructor.

Parameters:
log_levellog level

Definition at line 226 of file logger.cpp.

References log_level.

fawkes::Logger::~Logger ( ) [virtual]

Virtual empty destructor.

Definition at line 233 of file logger.cpp.


Member Function Documentation

void fawkes::Logger::log ( LogLevel  level,
const char *  component,
const char *  format,
  ... 
) [virtual]

Log message of given log level.

Parameters:
levellog level
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.

Reimplemented in fawkes::MultiLogger.

Definition at line 315 of file logger.cpp.

References log_level, and vlog().

Referenced by BallPosLogThread::loop().

void fawkes::Logger::log ( LogLevel  level,
const char *  component,
Exception e 
) [virtual]

Log exception for given log level.

Parameters:
levellog level
componentcomponent, used to distuinguish logged messages
eexception to log, exception messages will be logged

Reimplemented in fawkes::MultiLogger.

Definition at line 332 of file logger.cpp.

References log_level, LL_DEBUG, log_debug(), LL_INFO, log_info(), LL_WARN, log_warn(), LL_ERROR, and log_error().

void fawkes::Logger::log_debug ( const char *  component,
const char *  format,
  ... 
) [pure virtual]

Log debug message.

Parameters:
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.

Implemented in fawkes::NetworkLogger, fawkes::MultiLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by FvAcquisitionThread::FvAcquisitionThread(), MiniImageProducer::MiniImageProducer(), FvRetrieverThread::init(), FvRetrieverThread::finalize(), log(), fawkes::ComponentLogger::log_debug(), fawkes::ComponentLogger::log_error(), BlackBoardSynchronizationThread::init(), ExampleBlackBoardThread::finalize(), ExampleBlackBoardThread::init(), WorldModelNetworkThread::opponent_pose_rcvd(), WorldModelNetworkThread::gamestate_rcvd(), FestivalSynthThread::once(), JoystickBlackBoardLogger::JoystickBlackBoardLogger(), LaserSensorThread::init(), KatanaActThread::init(), KatanaActThread::loop(), KatanaCalibrationThread::once(), KatanaGotoThread::once(), KatanaGripperThread::once(), LaseEdlAcquisitionThread::pre_init(), LaseEdlAcquisitionThread::init(), LaseEdlAcquisitionThread::finalize(), HokuyoUrgAcquisitionThread::finalize(), HokuyoUrgGbxAcquisitionThread::finalize(), LaserHtSensorProcThread::loop(), LuaAgentExecutionThread::init(), SkillerExecutionThread::init(), SkillerExecutionThread::loop(), PanTiltRX28Thread::finalize(), EclipseAgentThread::init(), RefBoxCommThread::set_gamestate(), RefBoxCommThread::set_score(), RefBoxCommThread::set_team_goal(), RefBoxCommThread::set_half(), RefBoxCommThread::add_penalty(), Msl2010RefBoxProcessor::refbox_process(), WorldModelThread::init(), and XabslEngineThread::loop().

void fawkes::Logger::log_debug ( const char *  component,
Exception e 
) [pure virtual]

Log debug exception.

Parameters:
componentcomponent, used to distuinguish logged messages
eexception to log, exception messages will be logged

Implemented in fawkes::CacheLogger, fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

void fawkes::Logger::log_error ( const char *  component,
Exception e 
) [pure virtual]

Log error exception.

Parameters:
componentcomponent, used to distuinguish logged messages
eexception to log, exception messages will be logged

Implemented in fawkes::CacheLogger, fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

void fawkes::Logger::log_info ( const char *  component,
Exception e 
) [pure virtual]

Log informational exception.

Parameters:
componentcomponent, used to distuinguish logged messages
eexception to log, exception messages will be logged

Implemented in fawkes::CacheLogger, fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

void fawkes::Logger::log_warn ( const char *  component,
const char *  format,
  ... 
) [pure virtual]

Log warning message.

Parameters:
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.

Implemented in fawkes::NetworkLogger, fawkes::MultiLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by FvAcquisitionThread::set_vt_prepfin_hold(), JoystickAcquisitionThread::loop(), FvBaseThread::loop(), FvSrSavePipelineThread::loop(), log(), XmlRpcPluginMethods::plugin_load::execute(), XmlRpcPluginMethods::plugin_unload::execute(), fawkes::ComponentLogger::log_warn(), BlackBoardSynchronizationThread::init(), ExampleFinalizeNettlerThread::prepare_finalize_user(), WorldModelNetworkThread::pose_rcvd(), WorldModelNetworkThread::ball_pos_rcvd(), WorldModelNetworkThread::global_ball_pos_rcvd(), WorldModelNetworkThread::opponent_pose_rcvd(), PanTiltSensorThread::loop(), KatanaActThread::loop(), KatanaCalibrationThread::once(), KatanaGotoThread::once(), KatanaGripperThread::once(), KatanaSensorAcquisitionThread::loop(), LaseEdlAcquisitionThread::pre_init(), LaseEdlAcquisitionThread::init(), HokuyoUrgAcquisitionThread::init(), HokuyoUrgGbxAcquisitionThread::loop(), SkillerExecutionThread::loop(), PanTiltDirectedPerceptionThread::loop(), PanTiltRX28Thread::init(), PanTiltRX28Thread::loop(), PanTiltSonyEviD100PThread::loop(), PlayerClientThread::sync_fawkes_to_player(), PlayerClientThread::loop(), Msl2010RefBoxProcessor::refbox_process(), RemoteBlackBoardRefBoxProcessor::RemoteBlackBoardRefBoxProcessor(), RemoteBlackBoardRefBoxProcessor::refbox_process(), RemoteBlackBoardRefBoxProcessor::check_connection(), and XabslEngineThread::loop().

void fawkes::Logger::log_warn ( const char *  component,
Exception e 
) [pure virtual]

Log warning exception.

Parameters:
componentcomponent, used to distuinguish logged messages
eexception to log, exception messages will be logged

Implemented in fawkes::CacheLogger, fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Logger::LogLevel fawkes::Logger::loglevel ( ) [virtual]

Get log level.

Returns:
current log level.

Definition at line 254 of file logger.cpp.

References log_level.

void fawkes::Logger::set_loglevel ( LogLevel  level) [virtual]

Sets the log level.

The log level determines the minimum log level. If a message is logged that is below this level the message is ignored.

Parameters:
levelnew log level

Reimplemented in fawkes::MultiLogger.

Definition at line 244 of file logger.cpp.

References log_level.

void fawkes::Logger::tlog ( LogLevel  level,
struct timeval *  t,
const char *  component,
const char *  format,
  ... 
) [virtual]

Log message of given log level and time.

Parameters:
ttime
levellog level
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.

Reimplemented in fawkes::MultiLogger.

Definition at line 355 of file logger.cpp.

References log_level, and vtlog().

void fawkes::Logger::tlog ( LogLevel  level,
struct timeval *  t,
const char *  component,
Exception e 
) [virtual]

Log exception for given log level.

Parameters:
ttime
levellog level
componentcomponent, used to distuinguish logged messages
eexception to log, exception messages will be logged

Reimplemented in fawkes::MultiLogger.

Definition at line 374 of file logger.cpp.

References log_level, LL_DEBUG, tlog_debug(), LL_INFO, tlog_info(), LL_WARN, tlog_warn(), LL_ERROR, and tlog_error().

void fawkes::Logger::tlog_debug ( struct timeval *  t,
const char *  component,
const char *  format,
  ... 
) [pure virtual]

Log debug message for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by tlog().

void fawkes::Logger::tlog_debug ( struct timeval *  t,
const char *  component,
Exception e 
) [pure virtual]

Log debug exception for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
eexception to log, exception messages will be logged

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

void fawkes::Logger::tlog_error ( struct timeval *  t,
const char *  component,
const char *  format,
  ... 
) [pure virtual]

Log error message for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by tlog().

void fawkes::Logger::tlog_error ( struct timeval *  t,
const char *  component,
Exception e 
) [pure virtual]

Log error exception for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
eexception to log, exception messages will be logged

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

void fawkes::Logger::tlog_info ( struct timeval *  t,
const char *  component,
const char *  format,
  ... 
) [pure virtual]

Log informational message for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by tlog().

void fawkes::Logger::tlog_info ( struct timeval *  t,
const char *  component,
Exception e 
) [pure virtual]

Log informational exception for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
eexception to log, exception messages will be logged

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

void fawkes::Logger::tlog_warn ( struct timeval *  t,
const char *  component,
const char *  format,
  ... 
) [pure virtual]

Log warning message for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by tlog().

void fawkes::Logger::tlog_warn ( struct timeval *  t,
const char *  component,
Exception e 
) [pure virtual]

Log warning exception for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
eexception to log, exception messages will be logged

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

void fawkes::Logger::vlog ( LogLevel  level,
const char *  component,
const char *  format,
va_list  va 
) [virtual]

Log message for given log level.

Parameters:
levellog level
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.
vavariadic argument list

Reimplemented in fawkes::MultiLogger.

Definition at line 268 of file logger.cpp.

References log_level, LL_DEBUG, vlog_debug(), LL_INFO, vlog_info(), LL_WARN, vlog_warn(), LL_ERROR, and vlog_error().

Referenced by log().

void fawkes::Logger::vlog_debug ( const char *  component,
const char *  format,
va_list  va 
) [pure virtual]

Log debug message.

Parameters:
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.
vavariable argument list

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by vlog(), and fawkes::ComponentLogger::log_debug().

void fawkes::Logger::vlog_error ( const char *  component,
const char *  format,
va_list  va 
) [pure virtual]

Log error message.

Parameters:
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.
vavariable argument list

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by vlog(), and fawkes::ComponentLogger::log_error().

void fawkes::Logger::vlog_info ( const char *  component,
const char *  format,
va_list  va 
) [pure virtual]

Log informational message.

Parameters:
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.
vavariable argument list

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by vlog(), and fawkes::ComponentLogger::log_info().

void fawkes::Logger::vlog_warn ( const char *  component,
const char *  format,
va_list  va 
) [pure virtual]

Log warning message.

Parameters:
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.
vavariable argument list

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by vlog(), and fawkes::ComponentLogger::log_warn().

void fawkes::Logger::vtlog ( LogLevel  level,
struct timeval *  t,
const char *  component,
const char *  format,
va_list  va 
) [virtual]

Log message for given log level and time.

Parameters:
levellog level
ttime
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.
vavariadic argument list

Reimplemented in fawkes::MultiLogger.

Definition at line 293 of file logger.cpp.

References log_level, LL_DEBUG, vtlog_debug(), LL_INFO, vtlog_info(), LL_WARN, vtlog_warn(), LL_ERROR, and vtlog_error().

Referenced by tlog().

void fawkes::Logger::vtlog_debug ( struct timeval *  t,
const char *  component,
const char *  format,
va_list  va 
) [pure virtual]

Log debug message for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.
vavariable argument list

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by vtlog().

void fawkes::Logger::vtlog_error ( struct timeval *  t,
const char *  component,
const char *  format,
va_list  va 
) [pure virtual]

Log error message for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.
vavariable argument list

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by vtlog().

void fawkes::Logger::vtlog_info ( struct timeval *  t,
const char *  component,
const char *  format,
va_list  va 
) [pure virtual]

Log informational message for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.
vavariable argument list

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by vtlog().

void fawkes::Logger::vtlog_warn ( struct timeval *  t,
const char *  component,
const char *  format,
va_list  va 
) [pure virtual]

Log warning message for specific time.

Parameters:
ttime for this message to log
componentcomponent, used to distuinguish logged messages
formatformat of the message, see man page of sprintf for available tokens.
vavariable argument list

Implemented in fawkes::MultiLogger, fawkes::NetworkLogger, fawkes::CacheLogger, fawkes::FileLogger, and fawkes::ConsoleLogger.

Referenced by vtlog().


Member Data Documentation


The documentation for this class was generated from the following files: