From 53ae146667866733095d03af319897f0b344a9a8 Mon Sep 17 00:00:00 2001 From: Jacob Schramm Date: Wed, 28 Oct 2020 23:19:24 +0100 Subject: [PATCH 1/2] Introducing RotateLog configuration option that allows disabling timestamps on the logfiles. --- .gitignore | 1 + Conf.cpp | 8 ++++++++ Conf.h | 2 ++ Log.cpp | 15 ++++++++++++--- Log.h | 2 +- MMDVM.ini | 1 + MMDVMHost.cpp | 4 ++-- RemoteCommand.cpp | 2 +- 8 files changed, 28 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 14ab1c8..4009b5a 100644 --- a/.gitignore +++ b/.gitignore @@ -15,5 +15,6 @@ RemoteCommand *.user *.VC.db .vs +.vscode *.ambe GitVersion.h diff --git a/Conf.cpp b/Conf.cpp index 7491717..890dde5 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -82,6 +82,7 @@ m_logDisplayLevel(0U), m_logFileLevel(0U), m_logFilePath(), m_logFileRoot(), +m_logRotateLogs(1U), m_cwIdEnabled(false), m_cwIdTime(10U), m_cwIdCallsign(), @@ -453,6 +454,8 @@ bool CConf::read() m_logFileLevel = (unsigned int)::atoi(value); else if (::strcmp(key, "DisplayLevel") == 0) m_logDisplayLevel = (unsigned int)::atoi(value); + else if (::strcmp(key, "RotateLogs") == 0) + m_logRotateLogs = (unsigned int)::atoi(value); } else if (section == SECTION_CWID) { if (::strcmp(key, "Enable") == 0) m_cwIdEnabled = ::atoi(value) == 1; @@ -1074,6 +1077,11 @@ std::string CConf::getLogFileRoot() const return m_logFileRoot; } +unsigned int CConf::getLogRotateLogs() const +{ + return m_logRotateLogs; +} + bool CConf::getCWIdEnabled() const { return m_cwIdEnabled; diff --git a/Conf.h b/Conf.h index 335d461..0ea44a9 100644 --- a/Conf.h +++ b/Conf.h @@ -54,6 +54,7 @@ public: unsigned int getLogFileLevel() const; std::string getLogFilePath() const; std::string getLogFileRoot() const; + unsigned int getLogRotateLogs() const; // The CW ID section bool getCWIdEnabled() const; @@ -337,6 +338,7 @@ private: unsigned int m_logFileLevel; std::string m_logFilePath; std::string m_logFileRoot; + unsigned int m_logRotateLogs; bool m_cwIdEnabled; unsigned int m_cwIdTime; diff --git a/Log.cpp b/Log.cpp index 1d5ad29..6e573a8 100644 --- a/Log.cpp +++ b/Log.cpp @@ -41,6 +41,8 @@ static bool m_daemon = false; static unsigned int m_displayLevel = 2U; +static unsigned int m_rotateLogs = 1U; + static struct tm m_tm; static char LEVELS[] = " DMIWEF"; @@ -66,10 +68,16 @@ static bool LogOpen() } char filename[200U]; + char timestamp[37U] = ""; + + if (m_rotateLogs) { + ::sprintf(timestamp, "-%04d-%02d-%02d", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); + } + #if defined(_WIN32) || defined(_WIN64) - ::sprintf(filename, "%s\\%s-%04d-%02d-%02d.log", m_filePath.c_str(), m_fileRoot.c_str(), tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); + ::sprintf(filename, "%s\\%s%s.log", m_filePath.c_str(), m_fileRoot.c_str(), timestamp); #else - ::sprintf(filename, "%s/%s-%04d-%02d-%02d.log", m_filePath.c_str(), m_fileRoot.c_str(), tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); + ::sprintf(filename, "%s/%s%s.log", m_filePath.c_str(), m_fileRoot.c_str(), timestamp); #endif if ((m_fpLog = ::fopen(filename, "a+t")) != NULL) { @@ -86,12 +94,13 @@ static bool LogOpen() return status; } -bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel) +bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel, unsigned int rotateLogs) { m_filePath = filePath; m_fileRoot = fileRoot; m_fileLevel = fileLevel; m_displayLevel = displayLevel; + m_rotateLogs = rotateLogs; m_daemon = daemon; if (m_daemon) diff --git a/Log.h b/Log.h index 0d00653..0138a6c 100644 --- a/Log.h +++ b/Log.h @@ -30,7 +30,7 @@ extern void Log(unsigned int level, const char* fmt, ...); -extern bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel); +extern bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel, unsigned int rotateLogs); extern void LogFinalise(); #endif diff --git a/MMDVM.ini b/MMDVM.ini index ccc561b..2ad20f6 100644 --- a/MMDVM.ini +++ b/MMDVM.ini @@ -26,6 +26,7 @@ DisplayLevel=1 FileLevel=1 FilePath=. FileRoot=MMDVM +RotateLogs=1 [CW Id] Enable=1 diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index f174b83..512af87 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -242,9 +242,9 @@ int CMMDVMHost::run() #endif #if !defined(_WIN32) && !defined(_WIN64) - ret = ::LogInitialise(m_daemon, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel()); + ret = ::LogInitialise(m_daemon, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel(), m_conf.getLogRotateLogs()); #else - ret = ::LogInitialise(false, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel()); + ret = ::LogInitialise(false, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel(), m_conf.getLogRotateLogs()); #endif if (!ret) { ::fprintf(stderr, "MMDVMHost: unable to open the log file\n"); diff --git a/RemoteCommand.cpp b/RemoteCommand.cpp index fd96e46..33bd069 100644 --- a/RemoteCommand.cpp +++ b/RemoteCommand.cpp @@ -51,7 +51,7 @@ int main(int argc, char** argv) CRemoteCommand::CRemoteCommand(unsigned int port) : m_port(port) { - ::LogInitialise(false, ".", "RemoteCommand", 2U, 2U); + ::LogInitialise(false, ".", "RemoteCommand", 2U, 2U, 1U); } CRemoteCommand::~CRemoteCommand() From 7a5bbda2487947b15ecadacef9dbe7aa60da4ef2 Mon Sep 17 00:00:00 2001 From: Jacob Schramm Date: Thu, 29 Oct 2020 22:42:25 +0100 Subject: [PATCH 2/2] Changing RotateLogs to TimestampLogs --- Conf.cpp | 10 +++++----- Conf.h | 4 ++-- Log.cpp | 8 ++++---- Log.h | 2 +- MMDVM.ini | 2 +- MMDVMHost.cpp | 4 ++-- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Conf.cpp b/Conf.cpp index 890dde5..a056182 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -82,7 +82,7 @@ m_logDisplayLevel(0U), m_logFileLevel(0U), m_logFilePath(), m_logFileRoot(), -m_logRotateLogs(1U), +m_logTimestampLogs(1U), m_cwIdEnabled(false), m_cwIdTime(10U), m_cwIdCallsign(), @@ -454,8 +454,8 @@ bool CConf::read() m_logFileLevel = (unsigned int)::atoi(value); else if (::strcmp(key, "DisplayLevel") == 0) m_logDisplayLevel = (unsigned int)::atoi(value); - else if (::strcmp(key, "RotateLogs") == 0) - m_logRotateLogs = (unsigned int)::atoi(value); + else if (::strcmp(key, "TimestampLogs") == 0) + m_logTimestampLogs = (unsigned int)::atoi(value); } else if (section == SECTION_CWID) { if (::strcmp(key, "Enable") == 0) m_cwIdEnabled = ::atoi(value) == 1; @@ -1077,9 +1077,9 @@ std::string CConf::getLogFileRoot() const return m_logFileRoot; } -unsigned int CConf::getLogRotateLogs() const +unsigned int CConf::getLogTimestampLogs() const { - return m_logRotateLogs; + return m_logTimestampLogs; } bool CConf::getCWIdEnabled() const diff --git a/Conf.h b/Conf.h index 0ea44a9..c7b611a 100644 --- a/Conf.h +++ b/Conf.h @@ -54,7 +54,7 @@ public: unsigned int getLogFileLevel() const; std::string getLogFilePath() const; std::string getLogFileRoot() const; - unsigned int getLogRotateLogs() const; + unsigned int getLogTimestampLogs() const; // The CW ID section bool getCWIdEnabled() const; @@ -338,7 +338,7 @@ private: unsigned int m_logFileLevel; std::string m_logFilePath; std::string m_logFileRoot; - unsigned int m_logRotateLogs; + unsigned int m_logTimestampLogs; bool m_cwIdEnabled; unsigned int m_cwIdTime; diff --git a/Log.cpp b/Log.cpp index 6e573a8..c0a0162 100644 --- a/Log.cpp +++ b/Log.cpp @@ -41,7 +41,7 @@ static bool m_daemon = false; static unsigned int m_displayLevel = 2U; -static unsigned int m_rotateLogs = 1U; +static unsigned int m_timestampLogs = 1U; static struct tm m_tm; @@ -70,7 +70,7 @@ static bool LogOpen() char filename[200U]; char timestamp[37U] = ""; - if (m_rotateLogs) { + if (m_timestampLogs) { ::sprintf(timestamp, "-%04d-%02d-%02d", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); } @@ -94,13 +94,13 @@ static bool LogOpen() return status; } -bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel, unsigned int rotateLogs) +bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel, unsigned int timestampLogs) { m_filePath = filePath; m_fileRoot = fileRoot; m_fileLevel = fileLevel; m_displayLevel = displayLevel; - m_rotateLogs = rotateLogs; + m_timestampLogs = timestampLogs; m_daemon = daemon; if (m_daemon) diff --git a/Log.h b/Log.h index 0138a6c..f287f35 100644 --- a/Log.h +++ b/Log.h @@ -30,7 +30,7 @@ extern void Log(unsigned int level, const char* fmt, ...); -extern bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel, unsigned int rotateLogs); +extern bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel, unsigned int timestampLogs); extern void LogFinalise(); #endif diff --git a/MMDVM.ini b/MMDVM.ini index 2ad20f6..239cb94 100644 --- a/MMDVM.ini +++ b/MMDVM.ini @@ -26,7 +26,7 @@ DisplayLevel=1 FileLevel=1 FilePath=. FileRoot=MMDVM -RotateLogs=1 +TimestampLogs=1 [CW Id] Enable=1 diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index 512af87..5003cf9 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -242,9 +242,9 @@ int CMMDVMHost::run() #endif #if !defined(_WIN32) && !defined(_WIN64) - ret = ::LogInitialise(m_daemon, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel(), m_conf.getLogRotateLogs()); + ret = ::LogInitialise(m_daemon, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel(), m_conf.getLogTimestampLogs()); #else - ret = ::LogInitialise(false, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel(), m_conf.getLogRotateLogs()); + ret = ::LogInitialise(false, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel(), m_conf.getLogTimestampLogs()); #endif if (!ret) { ::fprintf(stderr, "MMDVMHost: unable to open the log file\n");