From 25f3c4666a814c3b1456cafb85348fb3e9a6674b Mon Sep 17 00:00:00 2001 From: wrongway88 Date: Wed, 29 Mar 2017 22:56:37 +0200 Subject: [PATCH] src: Logger Utility Added logger utility and outsourced file name creation for file loggers to it --- src/app/main.cpp | 2 ++ src/lib/CMakeLists.txt | 2 ++ src/lib/utility/logging/FileLogger.cpp | 25 +++++------------- src/lib/utility/logging/FileLogger.h | 4 +-- src/lib/utility/logging/LoggerUtility.cpp | 32 +++++++++++++++++++++++ src/lib/utility/logging/LoggerUtility.h | 12 +++++++++ 6 files changed, 56 insertions(+), 21 deletions(-) create mode 100644 src/lib/utility/logging/LoggerUtility.cpp create mode 100644 src/lib/utility/logging/LoggerUtility.h diff --git a/src/app/main.cpp b/src/app/main.cpp index c749d9bb..9c2c4a6f 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -22,6 +22,7 @@ #include "utility/commandline/CommandLineParser.h" #include "utility/logging/ConsoleLogger.h" #include "utility/logging/FileLogger.h" +#include "utility/logging/LoggerUtility.h" #include "utility/logging/logging.h" #include "utility/logging/LogManager.h" #include "utility/messaging/type/MessageEnteredLicense.h" @@ -42,6 +43,7 @@ void setupLogging() logManager->addLogger(consoleLogger); std::shared_ptr fileLogger = std::make_shared(); + fileLogger->setFileName(LoggerUtility::generateDatedFileName("log")); fileLogger->setLogDirectory(UserPaths::getLogPath()); fileLogger->setLogLevel(Logger::LOG_ALL); logManager->addLogger(fileLogger); diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 86aa9af8..af22d9b6 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -276,6 +276,8 @@ add_files( utility/logging/FileLogger.h utility/logging/Logger.cpp utility/logging/Logger.h + utility/logging/LoggerUtility.cpp + utility/logging/LoggerUtility.h utility/logging/logging.h utility/logging/LogManager.cpp utility/logging/LogManager.h diff --git a/src/lib/utility/logging/FileLogger.cpp b/src/lib/utility/logging/FileLogger.cpp index e88cc352..ced08132 100644 --- a/src/lib/utility/logging/FileLogger.cpp +++ b/src/lib/utility/logging/FileLogger.cpp @@ -8,7 +8,7 @@ FileLogger::FileLogger() : Logger("FileLogger") - , m_logFileName(getFileName()) + , m_logFileName() , m_logDirectory("user/log/") , m_maxLogLineCount(0) , m_maxLogFileCount(0) @@ -28,6 +28,11 @@ void FileLogger::setLogDirectory(const std::string& filePath) FileSystem::createDirectory(m_logDirectory); } +void FileLogger::setFileName(const std::string& fileName) +{ + m_logFileName = fileName; +} + void FileLogger::logInfo(const LogMessage& message) { logMessage("INFO", message); @@ -43,24 +48,6 @@ void FileLogger::logError(const LogMessage& message) logMessage("ERROR", message); } -std::string FileLogger::getFileName() -{ - time_t time; - std::time(&time); - tm t = *std::localtime(&time); - - std::stringstream filename; - filename << "log_"; - filename << t.tm_year + 1900 << "-"; - filename << (t.tm_mon < 9 ? "0" : "") << t.tm_mon + 1 << "-"; - filename << (t.tm_mday < 10 ? "0" : "") << t.tm_mday << "_"; - filename << (t.tm_hour < 10 ? "0" : "") << t.tm_hour << "-"; - filename << (t.tm_min < 10 ? "0" : "") << t.tm_min << "-"; - filename << (t.tm_sec < 10 ? "0" : "") << t.tm_sec; - - return filename.str(); -} - void FileLogger::setMaxLogLineCount(unsigned int lineCount) { m_maxLogLineCount = lineCount; diff --git a/src/lib/utility/logging/FileLogger.h b/src/lib/utility/logging/FileLogger.h index 0003ab81..0bc8c1e6 100644 --- a/src/lib/utility/logging/FileLogger.h +++ b/src/lib/utility/logging/FileLogger.h @@ -13,6 +13,7 @@ public: virtual ~FileLogger(); void setLogDirectory(const std::string& filePath); + void setFileName(const std::string& fileName); void setMaxLogLineCount(unsigned int logCount); // setting the max log file count to 0 will disable ringlogging @@ -23,11 +24,10 @@ private: virtual void logWarning(const LogMessage& message); virtual void logError(const LogMessage& message); - static std::string getFileName(); void logMessage(const std::string& type, const LogMessage& message); void updateLogFileName(); - const std::string m_logFileName; + std::string m_logFileName; std::string m_logDirectory; unsigned int m_maxLogLineCount; unsigned int m_maxLogFileCount; diff --git a/src/lib/utility/logging/LoggerUtility.cpp b/src/lib/utility/logging/LoggerUtility.cpp new file mode 100644 index 00000000..d06b628e --- /dev/null +++ b/src/lib/utility/logging/LoggerUtility.cpp @@ -0,0 +1,32 @@ +#include "LoggerUtility.h" + +#include +#include + +std::string LoggerUtility::generateDatedFileName(const std::string& prefix, const std::string& suffix) +{ + time_t time; + std::time(&time); + tm t = *std::localtime(&time); + + std::stringstream filename; + if (prefix.length() > 0) + { + filename << prefix; + filename << "_"; + } + filename << t.tm_year + 1900 << "-"; + filename << (t.tm_mon < 9 ? "0" : "") << t.tm_mon + 1 << "-"; + filename << (t.tm_mday < 10 ? "0" : "") << t.tm_mday << "_"; + filename << (t.tm_hour < 10 ? "0" : "") << t.tm_hour << "-"; + filename << (t.tm_min < 10 ? "0" : "") << t.tm_min << "-"; + filename << (t.tm_sec < 10 ? "0" : "") << t.tm_sec; + if (prefix.length() > 0) + { + filename << "_"; + filename << suffix; + } + + + return filename.str(); +} diff --git a/src/lib/utility/logging/LoggerUtility.h b/src/lib/utility/logging/LoggerUtility.h new file mode 100644 index 00000000..ca90b80c --- /dev/null +++ b/src/lib/utility/logging/LoggerUtility.h @@ -0,0 +1,12 @@ +#ifndef LOGGER_UTILITY_H +#define LOGGER_UTILITY_H + +#include + +class LoggerUtility +{ +public: + static std::string generateDatedFileName(const std::string& prefix = "", const std::string& suffix = ""); +}; + +#endif // LOGGER_UTILITY_H \ No newline at end of file