From 7890312d0a850ffc5be20d078d7e8f2d148dca3e Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Mon, 31 Aug 2009 21:21:09 +0200 Subject: =?UTF-8?q?LogManager=20=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Core/LogManager.h | 55 ++++++++++++++------------------------------------- 1 file changed, 15 insertions(+), 40 deletions(-) (limited to 'src/Core/LogManager.h') diff --git a/src/Core/LogManager.h b/src/Core/LogManager.h index 3aab49e..c569238 100644 --- a/src/Core/LogManager.h +++ b/src/Core/LogManager.h @@ -23,8 +23,8 @@ #include "export.h" #include "Configurable.h" +#include "Exception.h" #include "Logger.h" -#include "RemoteLogger.h" #include #include @@ -43,38 +43,30 @@ class MAD_CORE_EXPORT LogManager : public Configurable { friend class Application; friend class ThreadManager; - typedef LoggerBase::MessageCategory MessageCategory; - typedef LoggerBase::MessageLevel MessageLevel; + typedef Logger::MessageCategory MessageCategory; + typedef Logger::MessageLevel MessageLevel; struct Message { MessageCategory category; MessageLevel level; boost::posix_time::ptime timestamp; std::string message; - }; - - struct RemoteMessage { - MessageCategory category; - MessageLevel level; - boost::posix_time::ptime timestamp; - std::string message; std::string source; }; - class ConsoleLogger : public Logger, public RemoteLogger { + class ConsoleLogger : public Logger { private: // For long messages, writing to cerr is not atomic // -> lock cerr to prevent messages mixing up - boost::mutex cerrLock; + boost::mutex cerrMutex; protected: - virtual void logMessage(MessageCategory category, MessageLevel level, boost::posix_time::ptime timestamp, const std::string &message); - virtual void logMessage(MessageCategory category, MessageLevel, boost::posix_time::ptime timestamp, const std::string &message, const std::string &messageSource); + virtual void logMessage(MessageCategory category, MessageLevel, boost::posix_time::ptime timestamp, const std::string &message, const std::string &source); public: ConsoleLogger() {} - void logMessageDirect(MessageCategory category, MessageLevel level, boost::posix_time::ptime timestamp, const std::string &message); + void logMessageDirect(MessageCategory category, MessageLevel level, boost::posix_time::ptime timestamp, const std::string &message, const std::string &source); }; @@ -83,23 +75,19 @@ class MAD_CORE_EXPORT LogManager : public Configurable { boost::shared_ptr consoleLogger; std::set > loggers; - std::set > remoteLoggers; bool configured, running; - boost::mutex queueLock; + boost::mutex queueMutex; boost::condition_variable queueCond; - boost::mutex loggerLock; - boost::mutex remoteLoggerLock; + boost::mutex loggerMutex; std::queue messageQueue; - std::queue remoteMessageQueue; void loggerThread(); void stopLoggerThread() { - queueLock.lock(); + boost::lock_guard lock(queueMutex); running = false; - queueLock.unlock(); queueCond.notify_one(); } @@ -111,31 +99,18 @@ class MAD_CORE_EXPORT LogManager : public Configurable { virtual void configFinished(); public: - void log(MessageCategory category, MessageLevel level, boost::posix_time::ptime timestamp, const std::string &message); - void log(MessageCategory category, MessageLevel level, boost::posix_time::ptime timestamp, const std::string &message, const std::string &source); + static MessageLevel parseLevel(const std::string &str) throw (Exception); + + void log(MessageCategory category, MessageLevel level, boost::posix_time::ptime timestamp, const std::string &message, const std::string &source = std::string()); void registerLogger(boost::shared_ptr logger) { - loggerLock.lock(); + boost::lock_guard lock(loggerMutex); loggers.insert(logger); - loggerLock.unlock(); } void unregisterLogger(boost::shared_ptr logger) { - loggerLock.lock(); + boost::lock_guard lock(loggerMutex); loggers.erase(logger); - loggerLock.unlock(); - } - - void registerLogger(boost::shared_ptr logger) { - remoteLoggerLock.lock(); - remoteLoggers.insert(logger); - remoteLoggerLock.unlock(); - } - - void unregisterLogger(boost::shared_ptr logger) { - remoteLoggerLock.lock(); - remoteLoggers.erase(logger); - remoteLoggerLock.unlock(); } }; -- cgit v1.2.3