* eoLogger: overidded ctor in order to define a file to dump

This commit is contained in:
Caner Candan 2011-07-22 11:10:25 +02:00
commit 8567bc5d28
2 changed files with 54 additions and 15 deletions

View file

@ -21,8 +21,8 @@
Contact: http://eodev.sourceforge.net Contact: http://eodev.sourceforge.net
Authors: Authors:
Johann Dréo <johann.dreo@thalesgroup.com> Johann Dréo <johann.dreo@thalesgroup.com>
Caner Candan <caner.candan@thalesgroup.com> Caner Candan <caner.candan@thalesgroup.com>
*/ */
@ -40,17 +40,7 @@ Authors:
#include "eoLogger.h" #include "eoLogger.h"
eoLogger::eoLogger() : void eoLogger::_init()
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)
{ {
_standard_io_streams[&std::cout] = 1; _standard_io_streams[&std::cout] = 1;
_standard_io_streams[&std::clog] = 2; _standard_io_streams[&std::clog] = 2;
@ -67,6 +57,37 @@ eoLogger::eoLogger() :
addLevel("xdebug", eo::xdebug); 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() eoLogger::~eoLogger()
{ {
if (_fd > 2) { ::close(_fd); } 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() ) 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) void make_verbose(eoParser& parser)
{ {
eo::log._createParameters( parser ); eo::log._createParameters( parser );

View file

@ -142,12 +142,20 @@ class eoLogger : public eoObject,
public std::ostream public std::ostream
{ {
public: public:
//! default ctor
eoLogger(); eoLogger();
//! overidded ctor in order to instanciate a logger with a file define in parameter
eoLogger(eo::file file);
//! dtor
~eoLogger(); ~eoLogger();
//! common function for all eo objects
virtual std::string className() const; virtual std::string className() const;
//! Print the available levels on the standard output //! Print the available levels on the standard output
//! enablable with the option -l
void printLevels() const; void printLevels() const;
/*! Returns the selected levels, that is the one asked by the user /*! Returns the selected levels, that is the one asked by the user
@ -163,11 +171,16 @@ public:
inline eo::Levels getLevelContext() const { return _contextLevel; } inline eo::Levels getLevelContext() const { return _contextLevel; }
protected: protected:
//! in order to add a level of verbosity
void addLevel(std::string name, eo::Levels level); void addLevel(std::string name, eo::Levels level);
private: private:
//! used by the function make_verbose in order to add options to specify the verbose level
void _createParameters( eoParser& ); void _createParameters( eoParser& );
//! used by the set of ctors to initiate some useful variables
void _init();
private: private:
/** /**
* outbuf * outbuf
@ -195,21 +208,26 @@ public:
/** /**
* operator<< used there to set a verbose mode. * 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); friend eoLogger& operator<<(eoLogger&, const eo::Levels);
/** /**
* operator<< used there to set a filename through the class file. * 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); friend eoLogger& operator<<(eoLogger&, eo::file);
/** /**
* operator<< used there to set a verbose level through the class setlevel. * 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); 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. * 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&); friend eoLogger& operator<<(eoLogger&, std::ostream&);
private: private:
@ -254,6 +272,7 @@ private:
/** @example t-eoLogger.cpp /** @example t-eoLogger.cpp
*/ */
//! make_verbose gets level of verbose and sets it in eoLogger
void make_verbose(eoParser&); void make_verbose(eoParser&);
namespace eo namespace eo