/* * Module.cpp * * Copyright (C) 2009 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with this program. If not, see . */ #include "../export.h" #include "Module.h" #include namespace Mad { namespace Modules { namespace FileLogger { bool Module::handleConfigEntry(const Core::ConfigEntry &entry, bool handled) { if(handled) return false; if(entry[0].getKey().matches("Log")) { if(entry[0][0].matches("File")) { if(entry[1].isEmpty()) { if(!entry[0][1].isEmpty()) { lastLogger.reset(new FileLogger(entry[0][1].extract())); loggers.insert(lastLogger); application->getLogManager()->registerLogger(lastLogger); } else { lastLogger.reset(); application->logf(Core::Logger::LOG_WARNING, "FileLogger: no filename given."); } return true; } else if(entry[1].getKey().matches("Level")) { if(entry[2].isEmpty()) { try { if(entry[1][0].matches("remote")) lastLogger->setRemoteLevel(Core::LogManager::parseLevel(entry[1][1])); else lastLogger->setLevel(Core::LogManager::parseLevel(entry[1][0])); } catch(Core::Exception e) { application->logf(Core::Logger::LOG_WARNING, "Unknown log level '%s'.", entry[1][0].extract().c_str()); } return true; } } } } return false; } } } } extern "C" { MAD_MODULE_EXPORT Mad::Common::Module* FileLogger_create(Mad::Common::Application *application) { return new Mad::Modules::FileLogger::Module(application); } }