summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/logger/log.cc
diff options
context:
space:
mode:
authorschodet2004-04-16 16:46:46 +0000
committerschodet2004-04-16 16:46:46 +0000
commita3a3a4d6d183b22036a606cda8553192c98321cd (patch)
tree37d158408eabfbb8524d1214a985a44e376ee333 /2004/i/nono/src/logger/log.cc
parente68b824329a537eddddd5b59b9bdf498698ee604 (diff)
Logger fonctionne.
MovementRotation aussi. Ajout de Serial::wait. Ajout de commentaires.
Diffstat (limited to '2004/i/nono/src/logger/log.cc')
-rw-r--r--2004/i/nono/src/logger/log.cc85
1 files changed, 65 insertions, 20 deletions
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<int> (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<int> (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<Level> (i);
+ case 'n':
+ return static_cast<Level> (none);
+ case 'f':
+ return static_cast<Level> (fatal);
+ case 'e':
+ return static_cast<Level> (error | fatal);
+ case 'w':
+ return static_cast<Level> (warning | error | fatal);
+ case 'i':
+ return static_cast<Level> (info | warning | error | fatal);
+ case 'd':
+ return static_cast<Level> (debug | info | warning | error | fatal);
+ case 'v':
+ return static_cast<Level> (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_);
}