summaryrefslogtreecommitdiffstats
path: root/src/Core/Logger.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Core/Logger.h')
-rw-r--r--src/Core/Logger.h51
1 files changed, 49 insertions, 2 deletions
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;
+ }
};
}