From 766c56a693e8b1bd4293459bb256abdc0515a0b5 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Tue, 9 Jun 2009 19:01:02 +0200 Subject: Teile der Namespaces Common und Net in den neuen Namespace Core verschoben --- src/Common/LogManager.cpp | 146 ---------------------------------------------- 1 file changed, 146 deletions(-) delete mode 100644 src/Common/LogManager.cpp (limited to 'src/Common/LogManager.cpp') diff --git a/src/Common/LogManager.cpp b/src/Common/LogManager.cpp deleted file mode 100644 index bd83a5e..0000000 --- a/src/Common/LogManager.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/* - * LogManager.cpp - * - * Copyright (C) 2008 Matthias Schiffer - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -#include "LogManager.h" -#include "ConfigEntry.h" - -#include - -namespace Mad { -namespace Common { - -LogManager LogManager::logManager; - - -void LogManager::ConsoleLogger::logMessage(MessageCategory category _UNUSED_PARAMETER_, MessageLevel level, time_t timestamp _UNUSED_PARAMETER_, const std::string &message) { - if(level != CRITICAL) {// Critical messages are printed to cerr directly, so don't print them a second time - cerrLock.lock(); - std::cerr << message << std::endl; - cerrLock.unlock(); - } -} - -void LogManager::ConsoleLogger::logMessage(MessageCategory category _UNUSED_PARAMETER_, MessageLevel, time_t timestamp _UNUSED_PARAMETER_, const std::string &message, const std::string &messageSource) { - cerrLock.lock(); - std::cerr << message << " from " << messageSource << std::endl; - cerrLock.unlock(); -} - -void LogManager::ConsoleLogger::logMessageDirect(MessageCategory category _UNUSED_PARAMETER_, MessageLevel level _UNUSED_PARAMETER_, time_t timestamp _UNUSED_PARAMETER_, const std::string &message) { - cerrLock.lock(); - std::cerr << message << std::endl; - cerrLock.unlock(); -} - - -bool LogManager::handleConfigEntry(const ConfigEntry &entry, bool handled) { - if(handled) - return false; - - if(entry[0].getKey().matches("Logger")) { - if(entry[0][0].matches("Console")) { - if(entry[1].empty()) { - registerLogger(static_cast(&consoleLogger)); - return true; - } - } - else if(entry[1].empty()) { - Logger::logf(Logger::WARNING, "Unknown logger '%s'.", entry[0][0].c_str()); - return true; - } - } - - return false; -} - -void LogManager::configFinished() { - if(loggers.empty()) - registerLogger(static_cast(&consoleLogger)); - - // TODO Debug - consoleLogger.Logger::setLevel(LoggerBase::DEBUG); - - queueLock.lock(); - configured = true; - queueLock.unlock(); - queueCond.notify_one(); -} - -void LogManager::log(MessageCategory category, MessageLevel level, time_t timestamp, const std::string &message) { - if(level == LoggerBase::CRITICAL) - consoleLogger.logMessageDirect(category, level, timestamp, message); - - queueLock.lock(); - Message m = {category, level, timestamp, message}; - messageQueue.push(m); - queueLock.unlock(); - queueCond.notify_one(); -} - -void LogManager::log(MessageCategory category, MessageLevel level, time_t timestamp, const std::string &message, const std::string &source) { - queueLock.lock(); - RemoteMessage m = {category, level, timestamp, message, source}; - remoteMessageQueue.push(m); - queueLock.unlock(); - queueCond.notify_one(); -} - -void LogManager::loggerThread() { - boost::unique_lock lock(queueLock); - - running = true; - - while(running) { - while(running && ((messageQueue.empty() && messageQueue.empty()) || !configured)) - queueCond.wait(lock); - - while(!messageQueue.empty()) { - Message message = messageQueue.front(); - messageQueue.pop(); - lock.unlock(); - - loggerLock.lock(); - for(std::set::iterator logger = loggers.begin(); logger != loggers.end(); ++logger) { - if((*logger)->getLevel() >= message.level && (*logger)->isCategorySet(message.category)) - (*logger)->logMessage(message.category, message.level, message.timestamp, message.message); - } - loggerLock.unlock(); - - lock.lock(); - } - - while(!remoteMessageQueue.empty()) { - RemoteMessage message = remoteMessageQueue.front(); - remoteMessageQueue.pop(); - lock.unlock(); - - remoteLoggerLock.lock(); - for(std::set::iterator logger = remoteLoggers.begin(); logger != remoteLoggers.end(); ++logger) { - if((*logger)->getLevel() >= message.level && (*logger)->isCategorySet(message.category)) - (*logger)->logMessage(message.category, message.level, message.timestamp, message.message, message.source); - } - remoteLoggerLock.unlock(); - - lock.lock(); - } - } -} - -} -} -- cgit v1.2.3