RMOL Logo Get Revenue Management Optimisation Library at SourceForge.net. Fast, secure and Free Open Source software downloads
Logger.cpp
Go to the documentation of this file.
00001 // //////////////////////////////////////////////////////////////////////
00002 // Import section
00003 // //////////////////////////////////////////////////////////////////////
00004 // C
00005 #include <assert.h>
00006 // STL
00007 #include <iostream>
00008 // Rmol Logger
00009 #include <rmol/factory/FacSupervisor.hpp>
00010 #include <rmol/service/Logger.hpp>
00011 
00012 namespace RMOL {
00013 
00014     Logger* Logger::_instance = NULL;
00015   
00016     // //////////////////////////////////////////////////////////////////////
00017     Logger::Logger () : _logStream (&std::cout) {
00018       assert (false);
00019     }
00020 
00021     // //////////////////////////////////////////////////////////////////////
00022     Logger::Logger (const Logger&) : _logStream (&std::cout) {
00023       assert (false);
00024     }
00025 
00026     // //////////////////////////////////////////////////////////////////////
00027     Logger::Logger (const LOG::EN_LogLevel iLevel, std::ostream& ioLogStream) 
00028       : _level (iLevel), _logStream (&ioLogStream) {
00029     }
00030 
00031     // //////////////////////////////////////////////////////////////////////
00032     Logger::~Logger () {
00033       _logStream = NULL;
00034     }
00035 
00036     // //////////////////////////////////////////////////////////////////////
00037     LOG::EN_LogLevel Logger::getLogLevel() {
00038       return _level;
00039     }
00040 
00041     // //////////////////////////////////////////////////////////////////////
00042     std::ostream& Logger::getLogStream() {
00043       assert (_logStream != NULL);
00044       return *_logStream;
00045     }
00046 
00047     // //////////////////////////////////////////////////////////////////////
00048     void Logger::setLogParameters (const LOG::EN_LogLevel iLogLevel, 
00049                                    std::ostream& ioLogStream) {
00050       _level = iLogLevel;
00051       _logStream = &ioLogStream;
00052     }
00053 
00054     // //////////////////////////////////////////////////////////////////////
00055     Logger& Logger::instance() {
00056       if (_instance == NULL) {
00057         _instance = new Logger (LOG::DEBUG, std::cout);
00058         
00059         assert (_instance != NULL);
00060 
00061         FacSupervisor::instance().registerLoggerService (_instance);
00062       }
00063       return *_instance;
00064     }
00065 
00066 }