From dc84e63f1569860fef9d67f50fbf729aa05a7c49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C3=ABl=20Carr=C3=A9?= <rafael.carre@savoirfairelinux.com> Date: Tue, 16 Aug 2011 15:32:13 -0400 Subject: [PATCH] Logger::log() : simplify Also use a bigger buffer and do not overflow it --- daemon/src/logger.cpp | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/daemon/src/logger.cpp b/daemon/src/logger.cpp index 0e827c54f3..3bf25bae3a 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) -- GitLab