From e86ce263a9f5fdd7c09758f489d80c564dbb7fc5 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 14 May 2020 22:01:45 +0200 Subject: Add SQLite3 debug logging if PROJ_LOG_SQLITE3 env var is defined --- src/sqlite3_utils.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/sqlite3_utils.cpp b/src/sqlite3_utils.cpp index 7006674f..84bbb2ce 100644 --- a/src/sqlite3_utils.cpp +++ b/src/sqlite3_utils.cpp @@ -133,8 +133,25 @@ static int VFSCustomAccess(sqlite3_vfs *vfs, const char *zName, int flags, // --------------------------------------------------------------------------- +// SQLite3 logging infrastructure +static void projSqlite3LogCallback(void *, int iErrCode, const char *zMsg) { + fprintf(stderr, "SQLite3 message: (code %d) %s\n", iErrCode, zMsg); +} + std::unique_ptr SQLite3VFS::create(bool fakeSync, bool fakeLock, bool skipStatJournalAndWAL) { + + // Install SQLite3 logger if PROJ_LOG_SQLITE3 env var is defined + struct InstallSqliteLogger { + InstallSqliteLogger() { + if (getenv("PROJ_LOG_SQLITE3") != nullptr) { + sqlite3_config(SQLITE_CONFIG_LOG, projSqlite3LogCallback, + nullptr); + } + } + }; + static InstallSqliteLogger installSqliteLogger; + // Call to sqlite3_initialize() is normally not needed, except for // people building SQLite3 with -DSQLITE_OMIT_AUTOINIT sqlite3_initialize(); -- cgit v1.2.3