From 39473ec6ca657a4b91b70d0f1f2166ea4a42fe51 Mon Sep 17 00:00:00 2001 From: Guillaume Virlet Date: Sat, 28 Dec 2019 22:35:55 +0100 Subject: [PATCH 1/3] [Fixes #93] Disable logging by default --- src/log.cpp | 63 +++++++++++++++++++++++++++++++++-------------------- src/log.h | 4 ++++ 2 files changed, 43 insertions(+), 24 deletions(-) diff --git a/src/log.cpp b/src/log.cpp index 24cbd86..5a276c6 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -1,5 +1,7 @@ #include "log.h" +#include + #include "main.h" @@ -13,40 +15,53 @@ static std::string replaceAll(std::string subject, const std::string& search, co return subject; } +void Log::init() +{ + std::ifstream infile(FILEACTIVE); + if( infile.good() ) { + _logActive = 1; + } else { + _logActive = 0; + } +} int Log::logWithLevel(unsigned int level, const char *str ...) { - FILE *fp = iv_fopen(FILEPATH, "a"); + if ( _logActive == 1 ) { + FILE *fp = iv_fopen(FILEPATH, "a"); - char outerBuffer[2048]; - char innerBuffer[1500]; + char outerBuffer[2048]; + char innerBuffer[1500]; - va_list args; - va_start(args, str); - vsnprintf(innerBuffer, sizeof(innerBuffer), str, args); - va_end(args); + va_list args; + va_start(args, str); + vsnprintf(innerBuffer, sizeof(innerBuffer), str, args); + va_end(args); - const char *levelsStrings[] = {"debug", "info", "warn", "error"}; - if (level > sizeof(levelsStrings) - 1) { - level = sizeof(levelsStrings) - 1; - } + const char *levelsStrings[] = {"debug", "info", "warn", "error"}; + if (level > sizeof(levelsStrings) - 1) { + level = sizeof(levelsStrings) - 1; + } - // As we are writing HTML logs, we must escape the HTML special characters! - std::string escaped = replaceAll(innerBuffer, "&", "&"); - escaped = replaceAll(escaped, "<", "<"); - escaped = replaceAll(escaped, ">", ">"); + // As we are writing HTML logs, we must escape the HTML special characters! + std::string escaped = replaceAll(innerBuffer, "&", "&"); + escaped = replaceAll(escaped, "<", "<"); + escaped = replaceAll(escaped, ">", ">"); - time_t ts = time(NULL); - struct tm* tm_info; - tm_info = gmtime(&ts); - char time_buffer[32]; - strftime(time_buffer, sizeof(time_buffer), "%Y:%m:%d %H:%M:%S", tm_info); + time_t ts = time(NULL); + struct tm* tm_info; + tm_info = gmtime(&ts); + char time_buffer[32]; + strftime(time_buffer, sizeof(time_buffer), "%Y:%m:%d %H:%M:%S", tm_info); - snprintf(outerBuffer, sizeof(outerBuffer), "[%s][%s] %s
\n", time_buffer, levelsStrings[level], escaped.c_str()); - int written = iv_fwrite(outerBuffer, sizeof(char), strlen(outerBuffer), fp); + snprintf(outerBuffer, sizeof(outerBuffer), "[%s][%s] %s
\n", time_buffer, levelsStrings[level], escaped.c_str()); + int written = iv_fwrite(outerBuffer, sizeof(char), strlen(outerBuffer), fp); - iv_fclose(fp); + iv_fclose(fp); - return written; + return written; + } else { + return 0; + } } diff --git a/src/log.h b/src/log.h index 88ed7c9..63909e9 100644 --- a/src/log.h +++ b/src/log.h @@ -25,12 +25,16 @@ class Log return instance; } + void init(); + Log(Log const&) = delete; void operator=(Log const&) = delete; private: const char *DIR = FLASHDIR; const char *FILEPATH = FLASHDIR "/plop-reader-logs.html"; + const char *FILEACTIVE = FLASHDIR "/plop-reader-activate-log.txt"; + int _logActive = 1; Log() {}; ~Log() {}; From 1280dc98724bd5c3d38fecc0456d6b324c2503bc Mon Sep 17 00:00:00 2001 From: Guillaume Virlet Date: Mon, 30 Dec 2019 20:32:34 +0100 Subject: [PATCH 2/3] fix issue with log (de)activation not initialized --- src/log.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/log.h b/src/log.h index 63909e9..5c00e0d 100644 --- a/src/log.h +++ b/src/log.h @@ -36,7 +36,9 @@ class Log const char *FILEACTIVE = FLASHDIR "/plop-reader-activate-log.txt"; int _logActive = 1; - Log() {}; + Log() { + init(); + }; ~Log() {}; }; From ad7dabeb13ff361d3636e27cffd04645ff16c133 Mon Sep 17 00:00:00 2001 From: Guillaume Virlet Date: Sat, 22 Feb 2020 14:47:13 +0100 Subject: [PATCH 3/3] fix log deactivation - it was sometime creating the file and activating log without consent --- src/log.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/log.cpp b/src/log.cpp index 5a276c6..652443c 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -1,6 +1,6 @@ #include "log.h" -#include +#include #include "main.h" @@ -17,8 +17,8 @@ static std::string replaceAll(std::string subject, const std::string& search, co void Log::init() { - std::ifstream infile(FILEACTIVE); - if( infile.good() ) { + struct stat buffer; + if( stat(FILEACTIVE, &buffer) == 0) { _logActive = 1; } else { _logActive = 0;