diff options
author | Jason Wray <friedbunny@users.noreply.github.com> | 2016-09-08 13:01:19 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-08 13:01:19 -0400 |
commit | 4ef8f815c9bb8793f2ab3ec522a57117d0435700 (patch) | |
tree | 52e6f8c170d70f5517c1cd8b3b0080dee1c231ff /platform/default/sqlite3.cpp | |
parent | 4c8d61abf18fc5fde07c53b520eb0696d138106c (diff) | |
download | qtlocation-mapboxgl-4ef8f815c9bb8793f2ab3ec522a57117d0435700.tar.gz |
[core] Implement SQLite error logging (#6291)
Diffstat (limited to 'platform/default/sqlite3.cpp')
-rw-r--r-- | platform/default/sqlite3.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/platform/default/sqlite3.cpp b/platform/default/sqlite3.cpp index b6db71a752..da50a1db87 100644 --- a/platform/default/sqlite3.cpp +++ b/platform/default/sqlite3.cpp @@ -7,6 +7,8 @@ #include <chrono> #include <experimental/optional> +#include <mbgl/platform/log.hpp> + const static bool sqliteVersionCheck __attribute__((unused)) = []() { if (sqlite3_libversion_number() / 1000000 != SQLITE_VERSION_NUMBER / 1000000) { char message[96]; @@ -26,6 +28,7 @@ template <typename T> using optional = std::experimental::optional<T>; Database::Database(const std::string &filename, int flags) { + sqlite3_config(SQLITE_CONFIG_LOG, errorLogCallback, nullptr); const int err = sqlite3_open_v2(filename.c_str(), &db, flags, nullptr); if (err != SQLITE_OK) { const auto message = sqlite3_errmsg(db); @@ -55,6 +58,16 @@ Database::operator bool() const { return db != nullptr; } +void Database::errorLogCallback(void *, const int err, const char *msg) { + if (err == SQLITE_ERROR) { + mbgl::Log::Error(mbgl::Event::Database, "%s (Code %i)", msg, err); + } else if (err == SQLITE_WARNING) { + mbgl::Log::Warning(mbgl::Event::Database, "%s (Code %i)", msg, err); + } else { + mbgl::Log::Info(mbgl::Event::Database, "%s (Code %i)", msg, err); + } +} + void Database::setBusyTimeout(std::chrono::milliseconds timeout) { assert(db); const int err = sqlite3_busy_timeout(db, |