Main Page | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages | Examples

LogExample.cpp

This is an example of how to use ThreadedLogger.
See also:
ThreadedLogger Documentation
#include <rda/ThreadedLogger.h>
#include <rda/LogStreamMacros.h>

int main(int argc, char* argv[]) {

// INIT CODE STARTS

// Select logger to use.
//
// Alternative 1:
// No parameter will lead to use of DefaultLoggerFactory, which produces 
// DefaultLoggers, which simply do "printf". This is the "safe and simple" 
// fallback method of logging.
//
// rdaLogger::init();
//
// Alternative 2:
// The ThreadedLoggerFactory will use the ThreadedLogger, and passing true
// as argument means that we want it to be initialized from the config file
// properties.
   ThreadedLoggerFactory threadedLoggerFactory(true);
   rdaLogger::init(threadedLoggerFactory);

// INIT CODE ENDS

// Init done.  Now use it.
   rdaLogger::setDefaultLevel(rdaLogger::LOG_ALL);
   rdaLogger* logger = rdaLogger::getLogger("some.logger.name");
   logger->setLevel(rdaLogger::LOG_ALL);

   logger->error("An error message!");
   logger->warning("A warning message!");
   logger->info("An info message!");
   logger->trace("A trace message!");
   logger->debug("A debug message!");

   // Performance enhancement:
   if (logger->isLoggable(rdaLogger::LOG_DEBUG)) {
      char msg[1000];   // do lengthy processing and construction of a message...
      strcpy(msg, "A complicated and long message.");
      logger->debug(msg);
   }

   // Convenience macros
   int someValue = 5;   

   LOG_ERROR("some.logger.name.x", "An error value: " << someValue << "!" );
   LOG_WARNING("some.logger.name.y", "A warning value: " << someValue << "!");
   LOG_INFO("some.logger.name.z", "An info value: " << someValue << "!");
   LOG_TRACE("some.logger.name.x", "A trace value: " << someValue << "!");
   LOG_DEBUG("some.logger.name.x", "A debug value: " << someValue << "!");

// Shut down, deleting all loggers.

   rdaLogger::destroy();

   return 0;
}

RDA-2.3 documentation - 27 Jun 2007 - N.Trofimov