Simplify the logging mechanism
Move the implementation of the more specialized methods to the base class and let the platform implement only the most generic method that takes all the possible arguments. These specialized methods will then map to the generic implementation that must be provided by the platforms we support.
This commit is contained in:
committed by
Thiago Marcos P. Santos
parent
ba9d242069
commit
2948e7d121
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#include <mbgl/platform/android/log_android.hpp>
|
||||
|
||||
#include <iostream>
|
||||
#include <cstdarg>
|
||||
#define __STDC_FORMAT_MACROS // NDK bug workaround: https://code.google.com/p/android/issues/detail?id=72349
|
||||
#include <cinttypes>
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -2,34 +2,8 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#include <cstdarg>
|
||||
|
||||
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<char[]> 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 =
|
||||
|
||||
@@ -1,30 +1,11 @@
|
||||
#include <mbgl/platform/default/log_stderr.hpp>
|
||||
|
||||
#include <iostream>
|
||||
#include <cstdarg>
|
||||
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,27 @@
|
||||
#include <mbgl/platform/log.hpp>
|
||||
|
||||
#include <cstdarg>
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
std::unique_ptr<LogBackend> 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user