diff options
Diffstat (limited to 'src/Common/Logger.cpp')
-rw-r--r-- | src/Common/Logger.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/Common/Logger.cpp b/src/Common/Logger.cpp index 22748d1..199688d 100644 --- a/src/Common/Logger.cpp +++ b/src/Common/Logger.cpp @@ -26,7 +26,7 @@ namespace Common { std::list<Logger*> Logger::loggers; -void Logger::logfv(MessageLevel level, const char *format, va_list ap) { +void Logger::logfv(MessageCategory category, MessageLevel level, const char *format, va_list ap) { int size = 100; char *buf = (char*)std::malloc(size); @@ -39,7 +39,7 @@ void Logger::logfv(MessageLevel level, const char *format, va_list ap) { va_end(ap2); if(n > -1 && n < size) { - log(level, buf); + log(category, level, buf); std::free(buf); return; } @@ -54,18 +54,26 @@ void Logger::logfv(MessageLevel level, const char *format, va_list ap) { } -void Logger::log(MessageLevel level, const std::string &message) { +void Logger::log(MessageCategory category, MessageLevel level, const std::string &message) { for(std::list<Logger*>::iterator logger = loggers.begin(); logger != loggers.end(); ++logger) { - if((*logger)->getLevel() >= level) - (*logger)->logMessage(level, message); + if((*logger)->getLevel() >= level && (*logger)->getCategory() == category) + (*logger)->logMessage(category, level, message); } } +void Logger::logf(MessageCategory category, MessageLevel level, const char *format, ...) { + va_list ap; + + va_start(ap, format); + logfv(category, level, format, ap); + va_end(ap); +} + void Logger::logf(MessageLevel level, const char *format, ...) { va_list ap; va_start(ap, format); - logfv(level, format, ap); + logfv(ALL, level, format, ap); va_end(ap); } @@ -73,7 +81,7 @@ void Logger::logf(const char *format, ...) { va_list ap; va_start(ap, format); - logfv(DEFAULT, format, ap); + logfv(ALL, DEFAULT, format, ap); va_end(ap); } |