diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-11-22 15:43:19 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-11-22 20:58:51 +0100 |
commit | e76de0540284118845c93c4351c82c6c8d5a090a (patch) | |
tree | dc295f87b74c5a4766444f6d1e7020e6219017a8 /src/mbgl/util/logging.cpp | |
parent | 117863f1114551407c481abc752f5fcfd139c878 (diff) | |
download | qtlocation-mapboxgl-e76de0540284118845c93c4351c82c6c8d5a090a.tar.gz |
[build] move logging to util
Diffstat (limited to 'src/mbgl/util/logging.cpp')
-rw-r--r-- | src/mbgl/util/logging.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/mbgl/util/logging.cpp b/src/mbgl/util/logging.cpp new file mode 100644 index 0000000000..939f1def64 --- /dev/null +++ b/src/mbgl/util/logging.cpp @@ -0,0 +1,67 @@ +#include <mbgl/util/logging.hpp> +#include <mbgl/util/enum.hpp> +#include <mbgl/util/thread.hpp> + +#include <cstdio> +#include <cstdarg> +#include <sstream> + +namespace mbgl { + +namespace { + +static std::unique_ptr<Log::Observer> currentObserver; + +} // namespace + +void Log::setObserver(std::unique_ptr<Observer> observer) { + currentObserver = std::move(observer); +} + +std::unique_ptr<Log::Observer> Log::removeObserver() { + std::unique_ptr<Observer> observer; + std::swap(observer, currentObserver); + return observer; +} + +void Log::record(EventSeverity severity, Event event, const std::string &msg) { + record(severity, event, -1, msg); +} + +void Log::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 Log::record(EventSeverity severity, Event event, int64_t code) { + record(severity, event, code, std::string()); +} + +void Log::record(EventSeverity severity, Event event, int64_t code, const std::string &msg) { + if (currentObserver && severity != EventSeverity::Debug && + currentObserver->onRecord(severity, event, code, msg)) { + return; + } + + std::stringstream logStream; + + logStream << "{" << platform::getCurrentThreadName() << "}"; + logStream << "[" << Enum<Event>::toString(event) << "]"; + + if (code >= 0) { + logStream << "(" << code << ")"; + } + + if (!msg.empty()) { + logStream << ": " << msg; + } + + platformRecord(severity, logStream.str()); +} + +} // namespace mbgl |