diff options
Diffstat (limited to 'src/modules/FileLogger')
-rw-r--r-- | src/modules/FileLogger/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/modules/FileLogger/FileLogger.h | 40 | ||||
-rw-r--r-- | src/modules/FileLogger/Module.cpp (renamed from src/modules/FileLogger/FileLogger.cpp) | 28 | ||||
-rw-r--r-- | src/modules/FileLogger/Module.h | 67 |
4 files changed, 87 insertions, 51 deletions
diff --git a/src/modules/FileLogger/CMakeLists.txt b/src/modules/FileLogger/CMakeLists.txt index 7d90028..555425d 100644 --- a/src/modules/FileLogger/CMakeLists.txt +++ b/src/modules/FileLogger/CMakeLists.txt @@ -1,5 +1,6 @@ include_directories(${INCLUDES}) add_library(FileLogger MODULE - FileLogger.cpp FileLogger.h + FileLogger.h + Module.cpp Module.h ) diff --git a/src/modules/FileLogger/FileLogger.h b/src/modules/FileLogger/FileLogger.h index 9b0f8e2..a24f747 100644 --- a/src/modules/FileLogger/FileLogger.h +++ b/src/modules/FileLogger/FileLogger.h @@ -17,31 +17,20 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef MAD_MODULES_FILELOGGER_H_ -#define MAD_MODULES_FILELOGGER_H_ - -#include <Core/ConfigManager.h> -#include <Core/Configurable.h> -#include <Core/LogManager.h> +#ifndef MAD_MODULES_FILELOGGER_FILELOGGER_H_ +#define MAD_MODULES_FILELOGGER_FILELOGGER_H_ #include <fstream> +#include <Core/Logger.h> +#include <Core/RemoteLogger.h> + namespace Mad { namespace Modules { +namespace FileLogger { class FileLogger : public Core::Logger, public Core::RemoteLogger { private: - class ConfigHelper : public Core::Configurable { - protected: - virtual bool handleConfigEntry(const Core::ConfigEntry &entry, bool handled); - - public: - virtual int getPriority() const {return 1;} - }; - - static ConfigHelper configHelper; - static std::set<boost::shared_ptr<FileLogger> > loggers; - std::ofstream file; protected: @@ -55,23 +44,10 @@ class FileLogger : public Core::Logger, public Core::RemoteLogger { public: FileLogger(const std::string &filename) : file(filename.c_str(), std::ios::out|std::ios::app) {} - - static void registerConfigHelper() { - Core::ConfigManager::get()->registerConfigurable(&configHelper); - } - - static void unregisterConfigHelper() { - Core::ConfigManager::get()->unregisterConfigurable(&configHelper); - - for(std::set<boost::shared_ptr<FileLogger> >::iterator logger = loggers.begin(); logger != loggers.end(); ++logger) { - Core::LogManager::get()->unregisterLogger(boost::static_pointer_cast<Logger>(*logger)); - } - - loggers.clear(); - } }; } } +} -#endif /* MAD_MODULES_FILELOGGER_H_ */ +#endif /* MAD_MODULES_FILELOGGER_FILELOGGER_H_ */ diff --git a/src/modules/FileLogger/FileLogger.cpp b/src/modules/FileLogger/Module.cpp index bdae536..829c429 100644 --- a/src/modules/FileLogger/FileLogger.cpp +++ b/src/modules/FileLogger/Module.cpp @@ -1,7 +1,7 @@ /* - * FileLogger.cpp + * Module.cpp * - * Copyright (C) 2008 Matthias Schiffer <matthias@gamezock.de> + * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> * * 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 @@ -17,19 +17,14 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "FileLogger.h" - +#include "Module.h" #include <Core/ConfigEntry.h> - namespace Mad { namespace Modules { +namespace FileLogger { -FileLogger::ConfigHelper FileLogger::configHelper; -std::set<boost::shared_ptr<FileLogger> > FileLogger::loggers; - - -bool FileLogger::ConfigHelper::handleConfigEntry(const Core::ConfigEntry &entry, bool handled) { +bool Module::handleConfigEntry(const Core::ConfigEntry &entry, bool handled) { if(handled) return false; @@ -40,10 +35,10 @@ bool FileLogger::ConfigHelper::handleConfigEntry(const Core::ConfigEntry &entry, boost::shared_ptr<FileLogger> logger(new FileLogger(entry[0][1])); loggers.insert(logger); - Core::LogManager::get()->registerLogger(boost::static_pointer_cast<Logger>(logger)); + application->getLogManager()->registerLogger(boost::static_pointer_cast<Core::Logger>(logger)); } else { - Logger::logf(Logger::WARNING, "FileLogger: no filename given."); + application->logf(Core::LoggerBase::WARNING, "FileLogger: no filename given."); } return true; @@ -56,15 +51,12 @@ bool FileLogger::ConfigHelper::handleConfigEntry(const Core::ConfigEntry &entry, } } +} extern "C" { -void FileLogger_init() { - Mad::Modules::FileLogger::registerConfigHelper(); -} - -void FileLogger_deinit() { - Mad::Modules::FileLogger::unregisterConfigHelper(); +Mad::Common::Module* FileLogger_create(Mad::Common::Application *application) { + return new Mad::Modules::FileLogger::Module(application); } } diff --git a/src/modules/FileLogger/Module.h b/src/modules/FileLogger/Module.h new file mode 100644 index 0000000..e800b69 --- /dev/null +++ b/src/modules/FileLogger/Module.h @@ -0,0 +1,67 @@ +/* + * Module.h + * + * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> + * + * 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 <http://www.gnu.org/licenses/>. + */ + +#ifndef MAD_MODULES_FILELOGGER_MODULE_H_ +#define MAD_MODULES_FILELOGGER_MODULE_H_ + +#include "FileLogger.h" + +#include <Core/Configurable.h> +#include <Core/ConfigManager.h> +#include <Core/LogManager.h> + +#include <Common/Application.h> +#include <Common/Module.h> + +namespace Mad { +namespace Modules { +namespace FileLogger { + +class Module : public Common::Module, private Core::Configurable { + private: + Common::Application *application; + + std::set<boost::shared_ptr<FileLogger> > loggers; + + protected: + virtual bool handleConfigEntry(const Core::ConfigEntry &entry, bool handled); + + public: + Module(Common::Application *application0) : application(application0) { + application->getConfigManager()->registerConfigurable(this); + } + + virtual ~Module() { + application->getConfigManager()->unregisterConfigurable(this); + + for(std::set<boost::shared_ptr<FileLogger> >::iterator logger = loggers.begin(); logger != loggers.end(); ++logger) { + application->getLogManager()->unregisterLogger(boost::static_pointer_cast<Core::Logger>(*logger)); + } + + loggers.clear(); + } + + virtual int getPriority() const {return 1;} +}; + +} +} +} + +#endif /* MAD_MODULES_FILELOGGER_MODULE_H_ */ |