diff --git a/include/mbgl/platform/darwin/log_nslog.hpp b/include/mbgl/platform/darwin/log_nslog.hpp index d40f96303..5b2ed0411 100644 --- a/include/mbgl/platform/darwin/log_nslog.hpp +++ b/include/mbgl/platform/darwin/log_nslog.hpp @@ -9,9 +9,6 @@ class NSLogBackend : public LogBackend { public: inline ~NSLogBackend() = default; - void record(EventSeverity severity, Event event, const std::string &msg); - void record(EventSeverity severity, Event event, const char* format, ...); - void record(EventSeverity severity, Event event, int64_t code); void record(EventSeverity severity, Event event, int64_t code, const std::string &msg); }; diff --git a/include/mbgl/platform/default/log_stderr.hpp b/include/mbgl/platform/default/log_stderr.hpp index 45f76f0d1..e07357593 100644 --- a/include/mbgl/platform/default/log_stderr.hpp +++ b/include/mbgl/platform/default/log_stderr.hpp @@ -9,10 +9,7 @@ class StderrLogBackend : public LogBackend { public: inline ~StderrLogBackend() = default; - void record(EventSeverity severity, Event event, const std::string &msg); - void record(EventSeverity severity, Event event, const char* format, ...); - void record(EventSeverity severity, Event event, int64_t code); - void record(EventSeverity severity, Event event, int64_t code, const std::string &msg); + void record(EventSeverity severity, Event event, int64_t code, const std::string &msg) override; }; diff --git a/include/mbgl/platform/log.hpp b/include/mbgl/platform/log.hpp index 8b58921bb..e5431a07c 100644 --- a/include/mbgl/platform/log.hpp +++ b/include/mbgl/platform/log.hpp @@ -13,9 +13,11 @@ namespace mbgl { class LogBackend { public: virtual inline ~LogBackend() = default; - virtual void record(EventSeverity severity, Event event, const std::string &msg) = 0; - virtual void record(EventSeverity severity, Event event, const char* format, ...) = 0; - virtual void record(EventSeverity severity, Event event, int64_t code) = 0; + + void record(EventSeverity severity, Event event, const std::string &msg); + void record(EventSeverity severity, Event event, const char* format, ...); + void record(EventSeverity severity, Event event, int64_t code); + virtual void record(EventSeverity severity, Event event, int64_t code, const std::string &msg) = 0; }; diff --git a/platform/android/log_android.cpp b/platform/android/log_android.cpp index 5e40ce33b..e1bec3e0c 100644 --- a/platform/android/log_android.cpp +++ b/platform/android/log_android.cpp @@ -1,7 +1,5 @@ #include -#include -#include #define __STDC_FORMAT_MACROS // NDK bug workaround: https://code.google.com/p/android/issues/detail?id=72349 #include @@ -28,30 +26,6 @@ int AndroidLogBackend::severityToPriority(EventSeverity severity) { } } -void AndroidLogBackend::record(EventSeverity severity, Event event, const std::string &msg) { - __android_log_print(severityToPriority(severity), EventClass(event).c_str(), "%s", msg.c_str()); -} - -void AndroidLogBackend::record(EventSeverity severity, Event event, const char* format, ...) { - va_list args; - va_start(args, format); - - const int len = vsnprintf(nullptr, 0, format, args) + 1; - char* buf = new char[len]; - vsnprintf(buf, len, format, args); - - va_end(args); - - __android_log_print(severityToPriority(severity), EventClass(event).c_str(), "%s", buf); - - delete buf; - buf = nullptr; -} - -void AndroidLogBackend::record(EventSeverity severity, Event event, int64_t code) { - __android_log_print(severityToPriority(severity), EventClass(event).c_str(), "(%" PRId64 ")", code); -} - void AndroidLogBackend::record(EventSeverity severity, Event event, int64_t code, const std::string &msg) { __android_log_print(severityToPriority(severity), EventClass(event).c_str(), "(%" PRId64 ") %s", code, msg.c_str()); } diff --git a/platform/darwin/log_nslog.mm b/platform/darwin/log_nslog.mm index a82d78a01..edcf41ebb 100644 --- a/platform/darwin/log_nslog.mm +++ b/platform/darwin/log_nslog.mm @@ -2,34 +2,8 @@ #import -#include - namespace mbgl { -void NSLogBackend::record(EventSeverity severity, Event event, const std::string &msg) { - NSString *message = - [[NSString alloc] initWithBytes:msg.data() length:msg.size() encoding:NSUTF8StringEncoding]; - NSLog(@"[%s] %s: %@", EventSeverityClass(severity).c_str(), EventClass(event).c_str(), message); -} - -void NSLogBackend::record(EventSeverity severity, Event event, const char *format, ...) { - va_list args; - va_start(args, format); - const size_t len = vsnprintf(NULL, 0, format, args); - va_end(args); - std::unique_ptr buffer(new char[len + 1]); - va_start(args, format); - vsnprintf(buffer.get(), len + 1, format, args); - va_end(args); - NSLog(@"[%s] %s: %s", EventSeverityClass(severity).c_str(), EventClass(event).c_str(), - buffer.get()); -} - -void NSLogBackend::record(EventSeverity severity, Event event, int64_t code) { - NSLog(@"[%s] %s: (%lld)", EventSeverityClass(severity).c_str(), EventClass(event).c_str(), - code); -} - void NSLogBackend::record(EventSeverity severity, Event event, int64_t code, const std::string &msg) { NSString *message = diff --git a/platform/default/log_stderr.cpp b/platform/default/log_stderr.cpp index 62938b6d6..891bfd57f 100644 --- a/platform/default/log_stderr.cpp +++ b/platform/default/log_stderr.cpp @@ -1,30 +1,11 @@ #include #include -#include namespace mbgl { -void StderrLogBackend::record(EventSeverity severity, Event event, const std::string &msg) { - std::cerr << "[" << severity << "] " << event << ": " << msg << std::endl; -} - -void StderrLogBackend::record(EventSeverity severity, Event event, const char* format, ...) { - std::cerr << "[" << severity << "] " << event << ": "; - va_list args; - va_start(args, format); - vfprintf(stderr, format, args); - va_end(args); - std::cerr << std::endl; -} - -void StderrLogBackend::record(EventSeverity severity, Event event, int64_t code) { - std::cerr << "[" << severity << "] " << event << ": (" << code << ")" << std::endl; -} - void StderrLogBackend::record(EventSeverity severity, Event event, int64_t code, const std::string &msg) { std::cerr << "[" << severity << "] " << event << ": (" << code << ") " << msg << std::endl; - } } diff --git a/src/mbgl/platform/log.cpp b/src/mbgl/platform/log.cpp index b83c7a932..71463dc2f 100644 --- a/src/mbgl/platform/log.cpp +++ b/src/mbgl/platform/log.cpp @@ -1,7 +1,27 @@ #include +#include + namespace mbgl { std::unique_ptr Log::Backend; +void LogBackend::record(EventSeverity severity, Event event, const std::string &msg) { + record(severity, event, -1, msg); +} + +void LogBackend::record(EventSeverity severity, Event event, const char* format, ...) { + va_list args; + va_start(args, format); + char msg[4096]; + vsnprintf(msg, sizeof(msg), format, args); + va_end(args); + + record(severity, event, -1, msg); +} + +void LogBackend::record(EventSeverity severity, Event event, int64_t code) { + record(severity, event, code, std::string()); +} + }