diff --git a/src/lib/Application.cpp b/src/lib/Application.cpp index 8fcb8f9f..48121818 100644 --- a/src/lib/Application.cpp +++ b/src/lib/Application.cpp @@ -1,4 +1,7 @@ -#include "Application.h" +#include "Application.h" + +#include "utility/logging/ConsoleLogger.h" +#include "utility/logging/LogManager.h" std::shared_ptr Application::create(std::shared_ptr guiElementFactory) { @@ -8,6 +11,10 @@ std::shared_ptr Application::create(std::shared_ptrm_graphAccess = std::make_shared(); ptr->m_componentManager = ComponentManager::create(ptr->m_viewManager, guiElementFactory, ptr->m_codeAccess, ptr->m_graphAccess); + + std::shared_ptr consoleLogger = std::make_shared(); + LogManager::getInstance()->addLogger(consoleLogger); + return ptr; } diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 5e6a34ee..94928c2a 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -54,17 +54,19 @@ add_files( gui/GuiElement.h gui/GuiElementFactory.cpp gui/GuiElementFactory.h - + + utility/logging/ConsoleLogger.cpp + utility/logging/ConsoleLogger.h utility/logging/Logger.cpp utility/logging/Logger.h utility/logging/logging.h utility/logging/LogManager.cpp utility/logging/LogManager.h utility/logging/LogMessage.h - + utility/ConfigManager.cpp utility/ConfigManager.h - + Application.cpp Application.h ApplicationSettings.cpp diff --git a/src/lib/utility/logging/ConsoleLogger.cpp b/src/lib/utility/logging/ConsoleLogger.cpp new file mode 100644 index 00000000..87a9f1bc --- /dev/null +++ b/src/lib/utility/logging/ConsoleLogger.cpp @@ -0,0 +1,36 @@ +#include "utility/logging/ConsoleLogger.h" + +#include + +ConsoleLogger::ConsoleLogger() + : Logger("ConsoleLogger") +{ +} + +ConsoleLogger::~ConsoleLogger() +{ +} + +void ConsoleLogger::logInfo(const LogMessage& message) +{ + logMessage("INFO", message); +} + +void ConsoleLogger::logWarning(const LogMessage& message) +{ + logMessage("WARNING", message); +} + +void ConsoleLogger::logError(const LogMessage& message) +{ + logMessage("ERROR", message); +} + +void ConsoleLogger::logMessage(const std::string& type, const LogMessage& message) +{ + std::cout + << message.getTimeString("%H:%M:%S") << " | " + << message.getFileName() << ':' << message.line << ' ' << message.functionName << "() | " + << type << ": " << message.message + << std::endl; +} diff --git a/src/lib/utility/logging/ConsoleLogger.h b/src/lib/utility/logging/ConsoleLogger.h new file mode 100644 index 00000000..332543b9 --- /dev/null +++ b/src/lib/utility/logging/ConsoleLogger.h @@ -0,0 +1,21 @@ +#ifndef CONSOLE_LOGGER_H +#define CONSOLE_LOGGER_H + +#include "utility/logging/Logger.h" +#include "utility/logging/LogMessage.h" + +class ConsoleLogger: public Logger +{ +public: + ConsoleLogger(); + ~ConsoleLogger(); + + virtual void logInfo(const LogMessage& message); + virtual void logWarning(const LogMessage& message); + virtual void logError(const LogMessage& message); + +private: + void logMessage(const std::string& type, const LogMessage& message); +}; + +#endif // CONSOLE_LOGGER_H diff --git a/src/lib/utility/logging/LogMessage.h b/src/lib/utility/logging/LogMessage.h index 44da8c5d..b5ded3a2 100644 --- a/src/lib/utility/logging/LogMessage.h +++ b/src/lib/utility/logging/LogMessage.h @@ -9,23 +9,35 @@ struct LogMessage public: LogMessage( const std::string& message, - const std::string& fileName, + const std::string& filePath, const std::string& functionName, const unsigned int line, const std::tm& time ) : message(message) - , fileName(fileName) + , filePath(filePath) , functionName(functionName) , line(line) , time(time) {} + std::string getTimeString(const std::string& format) const + { + char timeString[50]; + strftime(timeString, 50, format.c_str(), &time); + return std::string(timeString); + } + + std::string getFileName() const + { + return filePath.substr(filePath.find_last_of("/\\") + 1); + } + const std::string message; - const std::string fileName; + const std::string filePath; const std::string functionName; const unsigned int line; const std::tm time; }; -#endif // LOG_MESSAGE_H \ No newline at end of file +#endif // LOG_MESSAGE_H diff --git a/src/lib/utility/logging/Logger.h b/src/lib/utility/logging/Logger.h index 4106a255..4c671eac 100644 --- a/src/lib/utility/logging/Logger.h +++ b/src/lib/utility/logging/Logger.h @@ -22,5 +22,4 @@ private: const std::string m_type; }; - -#endif +#endif // LOGGER_H