diff options
Diffstat (limited to 'src/Common/Logger.h')
-rw-r--r-- | src/Common/Logger.h | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/Common/Logger.h b/src/Common/Logger.h index f1cd33d..ba14347 100644 --- a/src/Common/Logger.h +++ b/src/Common/Logger.h @@ -33,24 +33,32 @@ class Logger { enum MessageLevel { CRITICAL, ERROR, WARNING, DEFAULT, VERBOSE, DEBUG }; + enum MessageCategory { + ALL, SYSTEM, NETWORK, DAEMON, USER, DISK, PROGRAM, GENERAL + }; private: static std::list<Logger*> loggers; + MessageCategory category; MessageLevel level; - static void logfv(MessageLevel level, const char *format, va_list ap); + static void logfv(MessageCategory category, MessageLevel level, const char *format, va_list ap); protected: - Logger() : level(DEFAULT) {} + Logger() : level(DEFAULT), category(ALL) {} - virtual void logMessage(MessageLevel level, const std::string &message) = 0; + virtual void logMessage(MessageCategory category, MessageLevel level, const std::string &message) = 0; public: - static void log(MessageLevel level, const std::string &message); + static void log(MessageCategory category, MessageLevel level, const std::string &message); + static void log(MessageLevel level, const std::string &message) { + log(ALL, level, message); + } static void log(const std::string &message) { - log(DEFAULT, message); + log(ALL, DEFAULT, message); } + static void logf(MessageCategory category, MessageLevel level, const char *format, ...); static void logf(MessageLevel level, const char *format, ...); static void logf(const char *format, ...); @@ -64,6 +72,14 @@ class Logger { loggers.erase(it); } + MessageCategory getCategory() const { + return category; + } + + void setCategory(MessageCategory newCategory) { + category = newCategory; + } + MessageLevel getLevel() const { return level; } |