diff --git a/daemon/src/logger.cpp b/daemon/src/logger.cpp index 0e827c54f32840dbf147e463e9831e59055b02a5..3bf25bae3a41f2c28976a2bb7b4f81e3dfbbfcb9 100644 --- a/daemon/src/logger.cpp +++ b/daemon/src/logger.cpp @@ -41,15 +41,12 @@ bool debugMode = false; void log (const int level, const char* format, ...) { - using std::string; if (!debugMode && level == LOG_DEBUG) return; va_list ap; - string prefix = "<> "; - char buffer[4096]; - string message = ""; - string color_prefix = ""; + const char *prefix = "<> "; + const char *color_prefix = ""; switch (level) { case LOG_ERR: { @@ -74,19 +71,15 @@ void log (const int level, const char* format, ...) } } + char buffer[8192]; va_start (ap, format); - vsprintf (buffer, format, ap); + vsnprintf (buffer, sizeof buffer, format, ap); va_end (ap); - message = buffer; - message = prefix + message; + if (consoleLog) + fprintf(stderr, "%s%s"END_COLOR"\n", color_prefix, buffer); - syslog (level, "%s", message.c_str()); - - if (consoleLog) { - message = color_prefix + message + END_COLOR + "\n"; - fprintf (stderr, "%s", message.c_str()); - } + syslog (level, "%s%s", prefix, buffer); } void setConsoleLog (bool c)