QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgsdbquerylog.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsdbquerylog.cpp
3 ------------
4 Date : October 2021
5 Copyright : (C) 2021 by Nyall Dawson
6 Email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#include "qgsdbquerylog.h"
17
18#include "qgsapplication.h"
19#include "qgslogger.h"
20
21#include <QDateTime>
22
23#include "moc_qgsdbquerylog.cpp"
24
25//
26// QgsDatabaseQueryLogEntry
27//
28
29QAtomicInt QgsDatabaseQueryLogEntry::sQueryId = 0;
30
32 : queryId( ++sQueryId )
33 , query( query )
34 , startedTime( QDateTime::currentMSecsSinceEpoch() )
35{}
36
37
38//
39// QgsDatabaseQueryLog
40//
41
42bool QgsDatabaseQueryLog::sEnabled = false;
43
45 : QObject( parent )
46{
47
48}
49
51{
52 if ( !sEnabled )
53 return;
54
55 QMetaObject::invokeMethod( QgsApplication::databaseQueryLog(), "queryStartedPrivate", Qt::QueuedConnection, Q_ARG( QgsDatabaseQueryLogEntry, query ) );
56}
57
59{
60 if ( !sEnabled )
61 return;
62
63 // record time of completion
64 QgsDatabaseQueryLogEntry finishedQuery = query;
65 finishedQuery.finishedTime = QDateTime::currentMSecsSinceEpoch();
66
67 QMetaObject::invokeMethod( QgsApplication::databaseQueryLog(), "queryFinishedPrivate", Qt::QueuedConnection, Q_ARG( QgsDatabaseQueryLogEntry, finishedQuery ) );
68}
69
71{
72 QgsDebugMsgLevel( query.query, 2 );
73 emit queryStarted( query );
74}
75
77{
78 QgsDebugMsgLevel( query.query, 2 );
79 emit queryFinished( query );
80}
81
static QgsDatabaseQueryLog * databaseQueryLog()
Returns the database query log.
Encapsulates a logged database query.
quint64 finishedTime
Time when the query finished (in milliseconds since epoch), if available.
QString query
The logged database query (e.g. the SQL query).
quint64 startedTime
Time when the query started (in milliseconds since epoch).
int queryId
Unique query ID.
QgsDatabaseQueryLogEntry(const QString &query=QString())
Constructor for QgsDatabaseQueryLogEntry.
static void log(const QgsDatabaseQueryLogEntry &query)
Logs a database query as starting.
void queryFinished(const QgsDatabaseQueryLogEntry &query)
Emitted whenever a database query has finished executing.
static void finished(const QgsDatabaseQueryLogEntry &query)
Records that the database query has finished.
void queryStarted(const QgsDatabaseQueryLogEntry &query)
Emitted whenever a database query is started.
void queryFinishedPrivate(const QgsDatabaseQueryLogEntry &query)
Internal slot for logging queries as finished.
void queryStartedPrivate(const QgsDatabaseQueryLogEntry &query)
Internal slot for logging queries as start.
QgsDatabaseQueryLog(QObject *parent=nullptr)
Creates a new query log.
#define QgsDebugMsgLevel(str, level)
Definition qgslogger.h:61