From 85c914d0087458009ec74bbfdd4f7d8345aa1d2c Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Mon, 31 Aug 2009 23:10:27 +0200 Subject: =?UTF-8?q?Logger:=20Unterst=C3=BCtzung=20f=C3=BCr=20RemoteLogger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Core/Logger.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) (limited to 'src/Core/Logger.h') diff --git a/src/Core/Logger.h b/src/Core/Logger.h index 24582bc..a43b340 100644 --- a/src/Core/Logger.h +++ b/src/Core/Logger.h @@ -34,7 +34,7 @@ class Logger { friend class LogManager; enum MessageLevel { - LOG_CRITICAL, LOG_ERROR, LOG_WARNING, LOG_DEFAULT, LOG_VERBOSE, LOG_DEBUG + LOG_CRITICAL = 1, LOG_ERROR, LOG_WARNING, LOG_DEFAULT, LOG_VERBOSE, LOG_DEBUG }; enum MessageCategory { @@ -45,10 +45,21 @@ class Logger { std::bitset<16> categories; MessageLevel level; + std::bitset<16> remoteCategories; + MessageLevel remoteLevel; + + bool remote; + protected: - Logger() : level(LOG_DEFAULT) {setAllCategories();} + Logger() : level(LOG_DEFAULT), remoteLevel(LOG_DEFAULT) {setAllCategories(); setAllRemoteCategories(); remote = false;} virtual ~Logger() {} + void log(MessageCategory category, MessageLevel level, boost::posix_time::ptime timestamp, const std::string &message, const std::string &source) { + if((source.empty() && getLevel() >= level && isCategorySet(category)) + || (!source.empty() && remote && getRemoteLevel() >= level && isRemoteCategorySet(category))) + logMessage(category, level, timestamp, message, source); + } + virtual void logMessage(MessageCategory category, MessageLevel level, boost::posix_time::ptime timestamp, const std::string &message, const std::string &source) = 0; public: @@ -72,6 +83,32 @@ class Logger { return categories.test(category); } + + void setRemoteCategory(MessageCategory newCategory) { + remote = true; + remoteCategories.set(newCategory); + } + + void unsetRemoteCategory(MessageCategory oldCategory) { + remote = true; + remoteCategories.reset(oldCategory); + } + + void setAllRemoteCategories() { + remote = true; + remoteCategories.set(); + } + + void unsetAllRemoteCategories() { + remote = true; + remoteCategories.reset(); + } + + bool isRemoteCategorySet(MessageCategory category) const { + return remoteCategories.test(category); + } + + MessageLevel getLevel() const { return level; } @@ -79,6 +116,16 @@ class Logger { void setLevel(MessageLevel newLevel) { level = newLevel; } + + + MessageLevel getRemoteLevel() const { + return remoteLevel; + } + + void setRemoteLevel(MessageLevel newLevel) { + remote = true; + remoteLevel = newLevel; + } }; } -- cgit v1.2.3