diff --git a/eo/src/utils/eoLogger.cpp b/eo/src/utils/eoLogger.cpp index 391076126..e478ba093 100644 --- a/eo/src/utils/eoLogger.cpp +++ b/eo/src/utils/eoLogger.cpp @@ -21,8 +21,8 @@ Contact: http://eodev.sourceforge.net Authors: - Johann Dréo - Caner Candan +Johann Dréo +Caner Candan */ @@ -40,17 +40,7 @@ Authors: #include "eoLogger.h" -eoLogger::eoLogger() : - std::ostream(&_obuf), - - _verbose("quiet", "verbose", "Set the verbose level", 'v'), - _printVerboseLevels(false, "print-verbose-levels", "Print verbose levels", 'l'), - _output("", "output", "Redirect a standard output to a file", 'o'), - - _selectedLevel(eo::progress), - _contextLevel(eo::quiet), - _fd(2), - _obuf(_fd, _contextLevel, _selectedLevel) +void eoLogger::_init() { _standard_io_streams[&std::cout] = 1; _standard_io_streams[&std::clog] = 2; @@ -67,6 +57,37 @@ eoLogger::eoLogger() : addLevel("xdebug", eo::xdebug); } +eoLogger::eoLogger() : + std::ostream(&_obuf), + + _verbose("quiet", "verbose", "Set the verbose level", 'v'), + _printVerboseLevels(false, "print-verbose-levels", "Print verbose levels", 'l'), + _output("", "output", "Redirect a standard output to a file", 'o'), + + _selectedLevel(eo::progress), + _contextLevel(eo::quiet), + _fd(2), + _obuf(_fd, _contextLevel, _selectedLevel) +{ + _init(); +} + +eoLogger::eoLogger(eo::file file) : + std::ostream(&_obuf), + + _verbose("quiet", "verbose", "Set the verbose level", 'v'), + _printVerboseLevels(false, "print-verbose-levels", "Print verbose levels", 'l'), + _output("", "output", "Redirect a standard output to a file", 'o'), + + _selectedLevel(eo::progress), + _contextLevel(eo::quiet), + _fd(2), + _obuf(_fd, _contextLevel, _selectedLevel) +{ + _init(); + *this << file; +} + eoLogger::~eoLogger() { if (_fd > 2) { ::close(_fd); } @@ -99,7 +120,7 @@ void eoLogger::_createParameters( eoParser& parser ) //------------------------------------------------------------------ - // // we're gonna print the list of levels if -l parameter is used. + // we're gonna print the list of levels if -l parameter is used. //------------------------------------------------------------------ if ( _printVerboseLevels.value() ) @@ -195,7 +216,6 @@ namespace eo {} } -//! make_verbose gets level of verbose and sets it in eoLogger void make_verbose(eoParser& parser) { eo::log._createParameters( parser ); diff --git a/eo/src/utils/eoLogger.h b/eo/src/utils/eoLogger.h index 50369d35c..e5faf8f34 100644 --- a/eo/src/utils/eoLogger.h +++ b/eo/src/utils/eoLogger.h @@ -142,12 +142,20 @@ class eoLogger : public eoObject, public std::ostream { public: + //! default ctor eoLogger(); + + //! overidded ctor in order to instanciate a logger with a file define in parameter + eoLogger(eo::file file); + + //! dtor ~eoLogger(); + //! common function for all eo objects virtual std::string className() const; //! Print the available levels on the standard output + //! enablable with the option -l void printLevels() const; /*! Returns the selected levels, that is the one asked by the user @@ -163,11 +171,16 @@ public: inline eo::Levels getLevelContext() const { return _contextLevel; } protected: + //! in order to add a level of verbosity void addLevel(std::string name, eo::Levels level); private: + //! used by the function make_verbose in order to add options to specify the verbose level void _createParameters( eoParser& ); + //! used by the set of ctors to initiate some useful variables + void _init(); + private: /** * outbuf @@ -195,21 +208,26 @@ public: /** * operator<< used there to set a verbose mode. */ + //! in order to use stream style to define the context verbose level where the following logs will be saved friend eoLogger& operator<<(eoLogger&, const eo::Levels); /** * operator<< used there to set a filename through the class file. */ + //! in order to use stream style to define a file to dump instead the standart output friend eoLogger& operator<<(eoLogger&, eo::file); /** * operator<< used there to set a verbose level through the class setlevel. */ + //! in order to use stream style to define manually the verbose level instead using options friend eoLogger& operator<<(eoLogger&, eo::setlevel); /** * operator<< used there to be able to use std::cout to say that we wish to redirect back the buffer to a standard output. */ + //! in order to use stream style to go back to a standart output defined by STL + //! and to get retro-compatibility friend eoLogger& operator<<(eoLogger&, std::ostream&); private: @@ -254,6 +272,7 @@ private: /** @example t-eoLogger.cpp */ +//! make_verbose gets level of verbose and sets it in eoLogger void make_verbose(eoParser&); namespace eo