From c9417076f87f2951774fdb91af5b68db205b41bd Mon Sep 17 00:00:00 2001 From: schodet Date: Wed, 19 May 2004 13:16:30 +0000 Subject: plein de truc. --- 2004/i/nono/src/logger/log.cc | 12 ++++----- 2004/i/nono/src/logger/log.h | 11 +++----- 2004/i/nono/src/logger/logger.cc | 57 ++++++++++++++++++++++++++-------------- 2004/i/nono/src/logger/logger.h | 17 +++++++++--- 4 files changed, 60 insertions(+), 37 deletions(-) diff --git a/2004/i/nono/src/logger/log.cc b/2004/i/nono/src/logger/log.cc index 89f4f91..6780068 100644 --- a/2004/i/nono/src/logger/log.cc +++ b/2004/i/nono/src/logger/log.cc @@ -25,19 +25,17 @@ #include "log.h" #include "logger.h" -Logger Log::logger_; - /// Constructeur. -Log::Log (const std::string &module) +Log::Log (const char *module) : std::ostream ((std::streambuf *) this), - module_ (module), + module_ (module), instance_ (0), curLevel_ (info) { init (); } /// Constructeur. -Log::Log (const std::string &module, const std::string &instance) +Log::Log (const char *module, const char *instance) : std::ostream ((std::streambuf *) this), module_ (module), instance_ (instance), curLevel_ (info) @@ -135,7 +133,7 @@ Log::overflow (int c) if (c == '\n') { if (curLevel_ & levelMask_) - logger_.log (module_, instance_, curLevel_, buffer_); + Logger::getInstance ().log (module_, instance_, curLevel_, buffer_); buffer_.erase (); } else @@ -149,6 +147,6 @@ Log::overflow (int c) void Log::init (void) { - levelMask_ = logger_.getLevel (module_); + levelMask_ = Logger::getInstance ().getLevel (module_); } diff --git a/2004/i/nono/src/logger/log.h b/2004/i/nono/src/logger/log.h index 2d919cd..d49e834 100644 --- a/2004/i/nono/src/logger/log.h +++ b/2004/i/nono/src/logger/log.h @@ -28,8 +28,6 @@ #include #include -class Logger; - class Log : protected std::streambuf, public std::ostream { public: @@ -45,17 +43,16 @@ class Log : protected std::streambuf, public std::ostream levelReserved = 0xffff }; private: - std::string module_; - std::string instance_; + const char *module_; + const char *instance_; std::string buffer_; - static Logger logger_; Level levelMask_; Level curLevel_; public: /// Constructeur. - Log (const std::string &module); + Log (const char *module); /// Constructeur. - Log (const std::string &module, const std::string &instance); + Log (const char *module, const char *instance); /// Paramètre le niveau de log pour la prochaine sortie. Log &operator() (Level level); /// Traduit le niveau de log. diff --git a/2004/i/nono/src/logger/logger.cc b/2004/i/nono/src/logger/logger.cc index 66ecfae..ac3dff7 100644 --- a/2004/i/nono/src/logger/logger.cc +++ b/2004/i/nono/src/logger/logger.cc @@ -25,6 +25,40 @@ #include "logger.h" #include "config/config.h" +/// Destructeur. +Logger::~Logger (void) +{ +} + +/// Récupère le log level pour un module. +Log::Level +Logger::getLevel (const char *module) const +{ + LogLevels::const_iterator i; + i = logLevels_.find (module); + if (i != logLevels_.end ()) + return i->second; + else + return Log::none; +} + +/// Loggue un message. +void +Logger::log (const char *module, const char *instance, + Log::Level level, const std::string &msg) +{ + buffer_ += module; + buffer_ += ": "; + if (instance) + { + buffer_ += instance; + buffer_ += ": "; + } + buffer_ += msg; + buffer_ += '\n'; + flush (); +} + /// Constructeur par default. Logger::Logger (void) { @@ -53,26 +87,11 @@ Logger::Logger (void) } } -/// Récupère le log level pour un module. -Log::Level -Logger::getLevel (const std::string &module) const -{ - LogLevels::const_iterator i; - i = logLevels_.find (module); - if (i != logLevels_.end ()) - return i->second; - else - return Log::none; -} - -/// Loggue un message. +/// Vide le buffer. void -Logger::log (const std::string &module, const std::string &instance, - Log::Level level, const std::string &msg) +Logger::flush (void) { - std::cout << module << ": "; - if (!instance.empty ()) - std::cout << instance << ": "; - std::cout << msg << std::endl; + std::cout << buffer_; + buffer_.erase (); } diff --git a/2004/i/nono/src/logger/logger.h b/2004/i/nono/src/logger/logger.h index 6cc7f7d..cc2dfd8 100644 --- a/2004/i/nono/src/logger/logger.h +++ b/2004/i/nono/src/logger/logger.h @@ -33,14 +33,23 @@ class Logger { typedef std::map LogLevels; LogLevels logLevels_; + std::string buffer_; public: - /// Constructeur par default. - Logger (void); + /// Destructeur. + ~Logger (void); /// Récupère le log level pour un module. - Log::Level getLevel (const std::string &module) const; + Log::Level getLevel (const char *module) const; /// Loggue un message. - void log (const std::string &module, const std::string &instance, + void log (const char *module, const char *instance, Log::Level level, const std::string &msg); + /// Récupère l'instance du Logger. + static Logger &getInstance (void) + { static Logger instance; return instance; } + private: + /// Constructeur par default. + Logger (void); + /// Vide le buffer. + void flush (void); }; #endif // logger_h -- cgit v1.2.3