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.h55
1 files changed, 48 insertions, 7 deletions
diff --git a/src/Core/Logger.h b/src/Core/Logger.h
index 53ec665..24582bc 100644
--- a/src/Core/Logger.h
+++ b/src/Core/Logger.h
@@ -20,10 +20,7 @@
#ifndef MAD_CORE_LOGGER_H_
#define MAD_CORE_LOGGER_H_
-#include "export.h"
-
-#include "LoggerBase.h"
-
+#include <bitset>
#include <string>
#include <boost/date_time/posix_time/ptime.hpp>
@@ -32,12 +29,56 @@ namespace Core {
class LogManager;
-class Logger : public LoggerBase {
- protected:
+class Logger {
+ public:
friend class LogManager;
- virtual void logMessage(MessageCategory category, MessageLevel level, boost::posix_time::ptime timestamp, const std::string &message) = 0;
+ enum MessageLevel {
+ LOG_CRITICAL, LOG_ERROR, LOG_WARNING, LOG_DEFAULT, LOG_VERBOSE, LOG_DEBUG
+ };
+
+ enum MessageCategory {
+ LOG_SYSTEM, LOG_NETWORK, LOG_DAEMON, LOG_USER, LOG_DISK, LOG_PROGRAM, LOG_GENERAL
+ };
+
+ private:
+ std::bitset<16> categories;
+ MessageLevel level;
+
+ protected:
+ Logger() : level(LOG_DEFAULT) {setAllCategories();}
+ virtual ~Logger() {}
+
+ virtual void logMessage(MessageCategory category, MessageLevel level, boost::posix_time::ptime timestamp, const std::string &message, const std::string &source) = 0;
+
+ public:
+ void setCategory(MessageCategory newCategory) {
+ categories.set(newCategory);
+ }
+
+ void unsetCategory(MessageCategory oldCategory) {
+ categories.reset(oldCategory);
+ }
+
+ void setAllCategories() {
+ categories.set();
+ }
+
+ void unsetAllCategories() {
+ categories.reset();
+ }
+
+ bool isCategorySet(MessageCategory category) const {
+ return categories.test(category);
+ }
+
+ MessageLevel getLevel() const {
+ return level;
+ }
+ void setLevel(MessageLevel newLevel) {
+ level = newLevel;
+ }
};
}