summaryrefslogtreecommitdiffstats
path: root/src/Common/Logger.h
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2008-10-25 15:50:08 +0200
committerMatthias Schiffer <matthias@gamezock.de>2008-10-25 15:50:08 +0200
commitb58831e5eec4d0595099b8e9c2979b157fe37041 (patch)
treef646c491f607ba8f959e02fae69d455ecce5e232 /src/Common/Logger.h
parent63ce9414183fb094a4bc172750d46810c332e786 (diff)
downloadmad-b58831e5eec4d0595099b8e9c2979b157fe37041.tar
mad-b58831e5eec4d0595099b8e9c2979b157fe37041.zip
ConsoleLogger kann jetzt ?ber Konfigurationsdateien aktiviert werden
Diffstat (limited to 'src/Common/Logger.h')
-rw-r--r--src/Common/Logger.h38
1 files changed, 21 insertions, 17 deletions
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 <algorithm>
#include <cstdarg>
#include <ctime>
-#include <list>
#include <memory>
+#include <queue>
+#include <set>
#include <string>
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> configHelper;
- static std::list<Logger*> loggers;
+ static std::set<Logger*> loggers;
+ static std::auto_ptr<std::queue<Message> > 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<Logger*>::iterator it = std::find(loggers.begin(), loggers.end(), logger);
- if(it != loggers.end())
- loggers.erase(it);
- }
-
- Logger() {}
- virtual ~Logger() {}
};
}