From a3a3a4d6d183b22036a606cda8553192c98321cd Mon Sep 17 00:00:00 2001 From: schodet Date: Fri, 16 Apr 2004 16:46:46 +0000 Subject: Logger fonctionne. MovementRotation aussi. Ajout de Serial::wait. Ajout de commentaires. --- 2004/i/nono/src/logger/log.cc | 85 +++++++++++++++++++++++++++++++++---------- 1 file changed, 65 insertions(+), 20 deletions(-) (limited to '2004/i/nono/src/logger/log.cc') diff --git a/2004/i/nono/src/logger/log.cc b/2004/i/nono/src/logger/log.cc index 4dc4f59..89f4f91 100644 --- a/2004/i/nono/src/logger/log.cc +++ b/2004/i/nono/src/logger/log.cc @@ -53,43 +53,88 @@ Log::operator() (Level level) return *this; } -static const char *levelTab[] = -{ - "none", - "fatal", - "error", - "warning", - "info", - "debug", - "verydebug" -}; - /// Traduit le niveau de log. void Log::toString (Level level, std::string &s) { - s = levelTab[static_cast (level)]; + switch (level) + { + case none: + s = "none"; break; + case fatal: + s = "fatal"; break; + case error: + s = "error"; break; + case warning: + s = "warning"; break; + case info: + s = "info"; break; + case debug: + s = "debug"; break; + case verydebug: + s = "verydebug"; break; + default: + s = "logunknown"; break; + } } /// Traduit le niveau de log. Log::Level Log::toLevel (const std::string &level) { - for (int i = 0; i < static_cast (nbLevel); ++i) + switch (level[0]) + { + case 'n': + return none; + case 'f': + return fatal; + case 'e': + return error; + case 'w': + return warning; + case 'i': + return info; + case 'd': + return debug; + case 'v': + return verydebug; + default: + return levelReserved; + } +} + +/// Traduit le masque de niveau de log. +Log::Level +Log::toLevelMask (const std::string &level) +{ + switch (level[0]) { - if (level == levelTab[i]) - return static_cast (i); + case 'n': + return static_cast (none); + case 'f': + return static_cast (fatal); + case 'e': + return static_cast (error | fatal); + case 'w': + return static_cast (warning | error | fatal); + case 'i': + return static_cast (info | warning | error | fatal); + case 'd': + return static_cast (debug | info | warning | error | fatal); + case 'v': + return static_cast (verydebug | debug | info | warning | error | fatal); + default: + return toLevel (level); } - return nbLevel; } /// Appellé lorsque le tampon streambuf déborde. int Log::overflow (int c) { -/* if (c == '\n') + if (c == '\n') { - if (curLevel_ <= maxLevel_) + if (curLevel_ & levelMask_) logger_.log (module_, instance_, curLevel_, buffer_); buffer_.erase (); } @@ -97,13 +142,13 @@ Log::overflow (int c) { buffer_ += c; } - return c;*/ + return c; } /// Partie commune des constructeurs. void Log::init (void) { - maxLevel_ = logger_.maxLevel (module_); + levelMask_ = logger_.getLevel (module_); } -- cgit v1.2.3