Public Types | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Static Protected Attributes | Private Member Functions | Static Private Member Functions | Static Private Attributes | Friends | List of all members
ULogger Class Reference

#include <ULogger.h>

Inheritance diagram for ULogger:
Inheritance graph
[legend]

Public Types

enum  Level {
  kDebug, kInfo, kWarning, kError,
  kFatal
}
 
enum  Type { kTypeNoLog, kTypeConsole, kTypeFile }
 

Static Public Member Functions

static ULogger::Level eventLevel ()
 
static ULogger::Level exitLevel ()
 
static void flush ()
 
static int getTime (std::string &timeStr)
 
static bool isBuffered ()
 
static bool isPrintColored ()
 
static bool isPrintEndLine ()
 
static bool isPrintLevel ()
 
static bool isPrintTime ()
 
static bool isPrintWhere ()
 
static bool isPrintWhereFullPath ()
 
static ULogger::Level level ()
 
static void reset ()
 
static void setBuffered (bool buffered)
 
static void setEventLevel (ULogger::Level eventSentLevel)
 
static void setExitLevel (ULogger::Level exitLevel)
 
static void setLevel (ULogger::Level level)
 
static void setPrintColored (bool printColored)
 
static void setPrintEndline (bool printEndline)
 
static void setPrintLevel (bool printLevel)
 
static void setPrintTime (bool printTime)
 
static void setPrintWhere (bool printWhere)
 
static void setPrintWhereFullPath (bool printWhereFullPath)
 
static void setType (Type type, const std::string &fileName=kDefaultLogFileName, bool append=true)
 
static Type type ()
 
static void write (const char *msg,...)
 
static void write (ULogger::Level level, const char *file, int line, const char *function, const char *msg,...)
 

Static Public Attributes

static const std::string kDefaultLogFileName = "./ULog.txt"
 

Protected Member Functions

void _flush ()
 
 ULogger ()
 
virtual ~ULogger ()
 

Static Protected Member Functions

static ULoggergetInstance ()
 

Static Protected Attributes

static bool append_ = true
 
static std::string logFileName_
 

Private Member Functions

virtual void _write (const char *msg, va_list arg)
 
virtual void _writeStr (const char *msg)
 

Static Private Member Functions

static ULoggercreateInstance ()
 

Static Private Attributes

static bool buffered_ = false
 
static std::string bufferedMsgs_
 
static UDestroyer< ULoggerdestroyer_
 
static Level eventLevel_ = kFatal
 
static bool exitingState_ = false
 
static Level exitLevel_ = kFatal
 
static ULoggerinstance_ = 0
 
static Level level_ = kWarning
 
static const char * levelName_ [5] = {"DEBUG", " INFO", " WARN", "ERROR", "FATAL"}
 
static bool limitWhereLength_ = false
 
static UMutex loggerMutex_
 
static bool printColored_ = true
 
static bool printEndline_ = true
 
static bool printLevel_ = true
 
static bool printTime_ = true
 
static bool printWhere_ = true
 
static bool printWhereFullPath_ = false
 
static Type type_ = ULogger::kTypeConsole
 

Friends

class UDestroyer< ULogger >
 

Detailed Description

This class is used to log messages with time on a console, in a file and/or with an event. At the start of the application, call ULogger::setType() with the type of the logger you want (see ULogger::Type, the type of the output can be changed at the run-time.). To use it, simply call the convenient macros UDEBUG(), UINFO(), UWARN(), UERROR(), UFATAL() depending of the severity of the message. You can disable some messages by setting the logger level ULogger::setLevel() to severity you want, defined by ULogger::Level. A fatal message will make the application to exit, printing the message on console (whatever the logger type) and posting a ULogEvent (synchronously... see UEventsManager::post()) before exiting.

The display of the logged messages can be modified:

When using a file logger (kTypeLogger), it can be useful in some application to buffer messages before writing them to hard drive (avoiding hard drive latencies). You can set ULogger::setBuffered() to true to do that. When the buffered messages will be written to file on appllciation exit (ULogger destructor) or when ULogger::flush() is called.

If you want the application to exit on a lower severity level than kFatal, you can set ULogger::setExitLevel() to any ULogger::Type you want.

Example:

int main(int argc, char * argv[])
{
// Set the logger type. The choices are kTypeConsole,
// kTypeFile or kTypeNoLog (nothing is logged).
// Set the logger severity level (kDebug, kInfo, kWarning, kError, kFatal).
// All log entries under the severity level are not logged. Here,
// only debug messages are not logged.
// Use a predefined Macro to easy logging. It can be
// called anywhere in the application as the logger is
// a Singleton.
UDEBUG("This message won't be logged because the "
"severity level of the logger is set to kInfo.");
UINFO("This message is logged.");
UWARN("A warning message...");
UERROR("An error message with code %d.", 42);
return 0;
}

Output:

[ INFO] (2010-09-25 18:08:20) main.cpp:18::main() This message is logged.
[ WARN] (2010-09-25 18:08:20) main.cpp:20::main() A warning message...
[ERROR] (2010-09-25 18:08:20) main.cpp:22::main() An error message with code 42.

Another useful form of the ULogger is to use it with the UTimer class. Here an example:

#include <utilite/UTimer.h>
...
UTimer timer; // automatically starts
// do some works for part A
UINFO("Time for part A = %f s", timer.ticks());
// do some works for part B
UINFO("Time for part B = %f s", timer.ticks());
// do some works for part C
UINFO("Time for part C = %f s", timer.ticks());
...
See also
setType()
setLevel()
UDEBUG(), UINFO(), UWARN(), UERROR(), UFATAL()

Definition at line 198 of file ULogger.h.

Member Enumeration Documentation

◆ Level

Logger levels, from lowest severity to highest:

Enumerator
kDebug 
kInfo 
kWarning 
kError 
kFatal 

Definition at line 221 of file ULogger.h.

◆ Type

Loggers available:

Enumerator
kTypeNoLog 
kTypeConsole 
kTypeFile 

Definition at line 213 of file ULogger.h.

Constructor & Destructor Documentation

◆ ULogger()

ULogger::ULogger ( )
inlineprotected

Definition at line 382 of file ULogger.h.

◆ ~ULogger()

ULogger::~ULogger ( )
protectedvirtual

Definition at line 587 of file ULogger.cpp.

Member Function Documentation

◆ _flush()

void ULogger::_flush ( )
protected

Definition at line 241 of file ULogger.cpp.

◆ _write()

virtual void ULogger::_write ( const char *  msg,
va_list  arg 
)
inlineprivatevirtual

Reimplemented in UFileLogger, and UConsoleLogger.

Definition at line 431 of file ULogger.h.

◆ _writeStr()

virtual void ULogger::_writeStr ( const char *  msg)
inlineprivatevirtual

Reimplemented in UFileLogger, and UConsoleLogger.

Definition at line 432 of file ULogger.h.

◆ createInstance()

ULogger * ULogger::createInstance ( )
staticprivate

Definition at line 572 of file ULogger.cpp.

◆ eventLevel()

static ULogger::Level ULogger::eventLevel ( )
inlinestatic

Definition at line 320 of file ULogger.h.

◆ exitLevel()

static ULogger::Level ULogger::exitLevel ( )
inlinestatic

Definition at line 311 of file ULogger.h.

◆ flush()

void ULogger::flush ( )
static

Flush buffered messages.

See also
setBuffered()

Definition at line 228 of file ULogger.cpp.

◆ getInstance()

ULogger * ULogger::getInstance ( )
staticprotected

Definition at line 563 of file ULogger.cpp.

◆ getTime()

int ULogger::getTime ( std::string &  timeStr)
static

Get the time in the format "2008-7-13 12:23:44".

Parameters
timeStrstring were the time will be copied.
Returns
the number of characters written, or 0 if an error occurred.

Definition at line 512 of file ULogger.cpp.

◆ isBuffered()

static bool ULogger::isBuffered ( )
inlinestatic

Definition at line 288 of file ULogger.h.

◆ isPrintColored()

static bool ULogger::isPrintColored ( )
inlinestatic

Definition at line 265 of file ULogger.h.

◆ isPrintEndLine()

static bool ULogger::isPrintEndLine ( )
inlinestatic

Definition at line 257 of file ULogger.h.

◆ isPrintLevel()

static bool ULogger::isPrintLevel ( )
inlinestatic

Definition at line 250 of file ULogger.h.

◆ isPrintTime()

static bool ULogger::isPrintTime ( )
inlinestatic

Definition at line 243 of file ULogger.h.

◆ isPrintWhere()

static bool ULogger::isPrintWhere ( )
inlinestatic

Definition at line 272 of file ULogger.h.

◆ isPrintWhereFullPath()

static bool ULogger::isPrintWhereFullPath ( )
inlinestatic

Definition at line 279 of file ULogger.h.

◆ level()

static ULogger::Level ULogger::level ( )
inlinestatic

Definition at line 302 of file ULogger.h.

◆ reset()

void ULogger::reset ( )
static

Reset to default parameters.

Definition at line 203 of file ULogger.cpp.

◆ setBuffered()

void ULogger::setBuffered ( bool  buffered)
static

Set is the logger buffers messages, default false. When true, the messages are buffered until the application is closed or ULogger::flush() is called.

See also
ULogger::flush()
Parameters
bufferedtrue to buffer messages, otherwise set to false.

Definition at line 218 of file ULogger.cpp.

◆ setEventLevel()

static void ULogger::setEventLevel ( ULogger::Level  eventSentLevel)
inlinestatic

An ULogEvent is sent on each message logged at the specified level. Note : On message with level >= exitLevel, the event is sent synchronously (see UEventsManager::post()).

See also
ULogEvent
setExitLevel()

Definition at line 319 of file ULogger.h.

◆ setExitLevel()

static void ULogger::setExitLevel ( ULogger::Level  exitLevel)
inlinestatic

Make application to exit when a log with level is written (useful for debugging). The message is printed to console (whatever the logger type) and an ULogEvent is sent (synchronously... see UEventsManager::post()) before exiting.

Note : A kFatal level will always exit whatever the level specified here.

Definition at line 310 of file ULogger.h.

◆ setLevel()

static void ULogger::setLevel ( ULogger::Level  level)
inlinestatic

Set logger level: default kInfo. All messages over the severity set are printed, other are ignored. The severity is from the lowest to highest:

  • kDebug
  • kInfo
  • kWarning
  • kError
  • kFatal
    Parameters
    levelthe minimum level of the messages printed.

Definition at line 301 of file ULogger.h.

◆ setPrintColored()

static void ULogger::setPrintColored ( bool  printColored)
inlinestatic

Print text with color: default true. Dark green for Debug, white for Info, yellow for Warning, red for Error and Fatal.

Parameters
printColoredtrue to print text with color, otherwise set to false.

Definition at line 264 of file ULogger.h.

◆ setPrintEndline()

static void ULogger::setPrintEndline ( bool  printEndline)
inlinestatic

Print end of line: default true.

Parameters
printLeveltrue to print end of line, otherwise set to false.

Definition at line 256 of file ULogger.h.

◆ setPrintLevel()

static void ULogger::setPrintLevel ( bool  printLevel)
inlinestatic

Print level: default true.

Parameters
printLeveltrue to print level, otherwise set to false.

Definition at line 249 of file ULogger.h.

◆ setPrintTime()

static void ULogger::setPrintTime ( bool  printTime)
inlinestatic

Print time: default true.

Parameters
printTimetrue to print time, otherwise set to false.

Definition at line 242 of file ULogger.h.

◆ setPrintWhere()

static void ULogger::setPrintWhere ( bool  printWhere)
inlinestatic

Print where is this message in source code: default true.

Parameters
printWheretrue to print where, otherwise set to false.

Definition at line 271 of file ULogger.h.

◆ setPrintWhereFullPath()

static void ULogger::setPrintWhereFullPath ( bool  printWhereFullPath)
inlinestatic

Print the full path: default true. ULogger::setPrintWhere() must be true to have path printed.

Parameters
printWhereFullPathtrue to print the full path, otherwise set to false.

Definition at line 278 of file ULogger.h.

◆ setType()

void ULogger::setType ( Type  type,
const std::string &  fileName = kDefaultLogFileName,
bool  append = true 
)
static

Set the type of the logger. When using kTypeFile, the parameter "fileName" would be changed (default is "./ULog.txt"), and optionally "append" if we want the logger to append messages to file or to overwrite the file.

Parameters
typethe ULogger::Type of the logger.
fileNamefile name used with a file logger type.
appendif true, the file isn't overwritten, otherwise it is.

TODO : Can it be useful to have 2 or more types at the same time ? Print in console and file at the same time.

Definition at line 175 of file ULogger.cpp.

◆ type()

static Type ULogger::type ( )
inlinestatic

Definition at line 235 of file ULogger.h.

◆ write() [1/2]

void ULogger::write ( const char *  msg,
  ... 
)
static

Write a message directly to logger without level handling.

Parameters
msgthe message to write.
...the variable arguments
Deprecated:
use UDEBUG(), UINFO(), UWARN(), UERROR() or UFATAL()

Definition at line 247 of file ULogger.cpp.

◆ write() [2/2]

void ULogger::write ( ULogger::Level  level,
const char *  file,
int  line,
const char *  function,
const char *  msg,
  ... 
)
static

Definition at line 307 of file ULogger.cpp.

Friends And Related Function Documentation

◆ UDestroyer< ULogger >

friend class UDestroyer< ULogger >
friend

Definition at line 402 of file ULogger.h.

Member Data Documentation

◆ append_

bool ULogger::append_ = true
staticprotected

Definition at line 412 of file ULogger.h.

◆ buffered_

bool ULogger::buffered_ = false
staticprivate

Definition at line 523 of file ULogger.h.

◆ bufferedMsgs_

std::string ULogger::bufferedMsgs_
staticprivate

Definition at line 525 of file ULogger.h.

◆ destroyer_

UDestroyer< ULogger > ULogger::destroyer_
staticprivate

Definition at line 443 of file ULogger.h.

◆ eventLevel_

ULogger::Level ULogger::eventLevel_ = kFatal
staticprivate

Definition at line 510 of file ULogger.h.

◆ exitingState_

bool ULogger::exitingState_ = false
staticprivate

Definition at line 533 of file ULogger.h.

◆ exitLevel_

ULogger::Level ULogger::exitLevel_ = kFatal
staticprivate

Definition at line 505 of file ULogger.h.

◆ instance_

ULogger * ULogger::instance_ = 0
staticprivate

Definition at line 438 of file ULogger.h.

◆ kDefaultLogFileName

const std::string ULogger::kDefaultLogFileName = "./ULog.txt"
static

The default log file name.

Definition at line 205 of file ULogger.h.

◆ level_

ULogger::Level ULogger::level_ = kWarning
staticprivate

Definition at line 499 of file ULogger.h.

◆ levelName_

const char * ULogger::levelName_ = {"DEBUG", " INFO", " WARN", "ERROR", "FATAL"}
staticprivate

Definition at line 512 of file ULogger.h.

◆ limitWhereLength_

bool ULogger::limitWhereLength_ = false
staticprivate

Definition at line 489 of file ULogger.h.

◆ logFileName_

std::string ULogger::logFileName_
staticprotected

Definition at line 407 of file ULogger.h.

◆ loggerMutex_

UMutex ULogger::loggerMutex_
staticprivate

Definition at line 517 of file ULogger.h.

◆ printColored_

bool ULogger::printColored_ = true
staticprivate

Definition at line 467 of file ULogger.h.

◆ printEndline_

bool ULogger::printEndline_ = true
staticprivate

Definition at line 461 of file ULogger.h.

◆ printLevel_

bool ULogger::printLevel_ = true
staticprivate

Definition at line 455 of file ULogger.h.

◆ printTime_

bool ULogger::printTime_ = true
staticprivate

Definition at line 449 of file ULogger.h.

◆ printWhere_

bool ULogger::printWhere_ = true
staticprivate

Definition at line 473 of file ULogger.h.

◆ printWhereFullPath_

bool ULogger::printWhereFullPath_ = false
staticprivate

Definition at line 481 of file ULogger.h.

◆ type_

ULogger::Type ULogger::type_ = ULogger::kTypeConsole
staticprivate

Definition at line 494 of file ULogger.h.


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


find_object_2d
Author(s): Mathieu Labbe
autogenerated on Mon Dec 12 2022 03:20:10