summaryrefslogtreecommitdiff
path: root/src/database
diff options
context:
space:
mode:
authorlouiz’ <louiz@louiz.org>2018-02-16 00:57:49 +0100
committerlouiz’ <louiz@louiz.org>2018-02-16 00:57:49 +0100
commitb1750843008b7928c72699c592776fb56c66ec26 (patch)
tree156b18816edc082c7e5b47edad260019d66d0a66 /src/database
parentd3e07eee1335822643d7086b95590b60a4e002c3 (diff)
downloadbiboumi-b1750843008b7928c72699c592776fb56c66ec26.tar.gz
biboumi-b1750843008b7928c72699c592776fb56c66ec26.tar.bz2
biboumi-b1750843008b7928c72699c592776fb56c66ec26.tar.xz
biboumi-b1750843008b7928c72699c592776fb56c66ec26.zip
Log the warn/error messages coming from libpq in a correct format
Diffstat (limited to 'src/database')
-rw-r--r--src/database/postgresql_engine.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/database/postgresql_engine.cpp b/src/database/postgresql_engine.cpp
index 518c23a..59bc885 100644
--- a/src/database/postgresql_engine.cpp
+++ b/src/database/postgresql_engine.cpp
@@ -11,6 +11,8 @@
#include <logger/logger.hpp>
+#include <cstring>
+
PostgresqlEngine::PostgresqlEngine(PGconn*const conn):
conn(conn)
{}
@@ -20,6 +22,15 @@ PostgresqlEngine::~PostgresqlEngine()
PQfinish(this->conn);
}
+static void logging_notice_processor(void*, const char* original)
+{
+ if (original && std::strlen(original) > 0)
+ {
+ std::string message{original, std::strlen(original) - 1};
+ log_warning("PostgreSQL: ", message);
+ }
+}
+
std::unique_ptr<DatabaseEngine> PostgresqlEngine::open(const std::string& conninfo)
{
PGconn* con = PQconnectdb(conninfo.data());
@@ -37,6 +48,7 @@ std::unique_ptr<DatabaseEngine> PostgresqlEngine::open(const std::string& connin
PQfinish(con);
throw std::runtime_error("failed to open connection.");
}
+ PQsetNoticeProcessor(con, &logging_notice_processor, nullptr);
return std::make_unique<PostgresqlEngine>(con);
}