Index: system_logging.cc |
diff --git a/system_logging.cc b/system_logging.cc |
index 578951418500d2f2d7782f327a1d13fe3bdf1418..04bb356ec4f6a0f5423681bef65a52024b1da748 100644 |
--- a/system_logging.cc |
+++ b/system_logging.cc |
@@ -2,14 +2,15 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include <stdarg.h> |
+#include "crash-reporter/system_logging.h" |
+ |
#include <syslog.h> |
-#include "crash-reporter/system_logging.h" |
+#include "base/stringprintf.h" |
std::string SystemLoggingImpl::identity_; |
-SystemLoggingImpl::SystemLoggingImpl() { |
+SystemLoggingImpl::SystemLoggingImpl() : is_accumulating_(false) { |
} |
SystemLoggingImpl::~SystemLoggingImpl() { |
@@ -22,23 +23,33 @@ void SystemLoggingImpl::Initialize(const char *ident) { |
openlog(identity_.c_str(), LOG_PID, LOG_USER); |
} |
+void SystemLoggingImpl::LogWithLevel(int level, const char *format, |
+ va_list arg_list) { |
+ std::string message = StringPrintV(format, arg_list); |
+ syslog(level, "%s", message.c_str()); |
+ if (is_accumulating_) { |
+ accumulator_.append(message); |
+ accumulator_.push_back('\n'); |
+ } |
+} |
+ |
void SystemLoggingImpl::LogInfo(const char *format, ...) { |
va_list vl; |
va_start(vl, format); |
- vsyslog(LOG_INFO, format, vl); |
+ LogWithLevel(LOG_INFO, format, vl); |
va_end(vl); |
} |
void SystemLoggingImpl::LogWarning(const char *format, ...) { |
va_list vl; |
va_start(vl, format); |
- vsyslog(LOG_WARNING, format, vl); |
+ LogWithLevel(LOG_WARNING, format, vl); |
va_end(vl); |
} |
void SystemLoggingImpl::LogError(const char *format, ...) { |
va_list vl; |
va_start(vl, format); |
- vsyslog(LOG_ERR, format, vl); |
+ LogWithLevel(LOG_ERR, format, vl); |
va_end(vl); |
} |