summaryrefslogtreecommitdiffstats
path: root/src/Core/LogManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Core/LogManager.h')
-rw-r--r--src/Core/LogManager.h55
1 files changed, 15 insertions, 40 deletions
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 <queue>
#include <set>
@@ -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> consoleLogger;
std::set<boost::shared_ptr<Logger> > loggers;
- std::set<boost::shared_ptr<RemoteLogger> > 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<Message> messageQueue;
- std::queue<RemoteMessage> remoteMessageQueue;
void loggerThread();
void stopLoggerThread() {
- queueLock.lock();
+ boost::lock_guard<boost::mutex> 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> logger) {
- loggerLock.lock();
+ boost::lock_guard<boost::mutex> lock(loggerMutex);
loggers.insert(logger);
- loggerLock.unlock();
}
void unregisterLogger(boost::shared_ptr<Logger> logger) {
- loggerLock.lock();
+ boost::lock_guard<boost::mutex> lock(loggerMutex);
loggers.erase(logger);
- loggerLock.unlock();
- }
-
- void registerLogger(boost::shared_ptr<RemoteLogger> logger) {
- remoteLoggerLock.lock();
- remoteLoggers.insert(logger);
- remoteLoggerLock.unlock();
- }
-
- void unregisterLogger(boost::shared_ptr<RemoteLogger> logger) {
- remoteLoggerLock.lock();
- remoteLoggers.erase(logger);
- remoteLoggerLock.unlock();
}
};