diff --git a/src/log.cpp b/src/log.cpp index 24cbd86..652443c 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() +{ + struct stat buffer; + if( stat(FILEACTIVE, &buffer) == 0) { + _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..5c00e0d 100644 --- a/src/log.h +++ b/src/log.h @@ -25,14 +25,20 @@ 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() { + init(); + }; ~Log() {}; };