From b58831e5eec4d0595099b8e9c2979b157fe37041 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 25 Oct 2008 15:50:08 +0200 Subject: ConsoleLogger kann jetzt ?ber Konfigurationsdateien aktiviert werden --- src/Common/Logger.h | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) (limited to 'src/Common/Logger.h') diff --git a/src/Common/Logger.h b/src/Common/Logger.h index 9499792..cf7e7d5 100644 --- a/src/Common/Logger.h +++ b/src/Common/Logger.h @@ -26,8 +26,9 @@ #include #include #include -#include #include +#include +#include #include namespace Mad { @@ -38,22 +39,38 @@ class Logger : public LoggerBase { class ConfigHelper : private Configurable { protected: virtual bool handleConfigEntry(const ConfigEntry &entry, bool handled); + virtual void configFinished(); + + public: + ~ConfigHelper(); + }; + + struct Message { + MessageCategory category; + MessageLevel level; + time_t timestamp; + std::string message; }; static std::auto_ptr configHelper; - static std::list loggers; + static std::set loggers; + static std::auto_ptr > messageQueue; static void logfv(MessageCategory category, MessageLevel level, const char *format, va_list ap); + static void log(MessageCategory category, MessageLevel level, time_t timestamp, const std::string &message); + protected: - virtual void logMessage(MessageCategory category, MessageLevel level, time_t messageTimestamp, const std::string &message) = 0; + virtual void logMessage(MessageCategory category, MessageLevel level, time_t timestamp, const std::string &message) = 0; public: static void initConfigHelper() { configHelper.reset(new ConfigHelper()); } - static void log(MessageCategory category, MessageLevel level, const std::string &message); + static void log(MessageCategory category, MessageLevel level, const std::string &message) { + log(category, level, std::time(0), message); + } static void log(MessageCategory category, const std::string &message) { log(category, DEFAULT, message); } @@ -68,19 +85,6 @@ class Logger : public LoggerBase { static void logf(MessageCategory category, const char *format, ...); static void logf(MessageLevel level, const char *format, ...); static void logf(const char *format, ...); - - static void registerLogger(Logger *logger) { - loggers.push_back(logger); - } - - static void unregisterLogger(Logger *logger) { - std::list::iterator it = std::find(loggers.begin(), loggers.end(), logger); - if(it != loggers.end()) - loggers.erase(it); - } - - Logger() {} - virtual ~Logger() {} }; } -- cgit v1.2.3