summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/log.cpp
blob: 5f9d72f1245fc17b28cdb0461f027dd03c730459 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "log.h"
#include "db/queryexecutorsteps/queryexecutorstep.h"
#include <QTime>
#include <QDateTime>
#include <QDebug>

static bool SQL_DEBUG = false;
static bool EXECUTOR_DEBUG = false;
static QString SQL_DEBUG_FILTER = "";

void setSqlLoggingEnabled(bool enabled)
{
    SQL_DEBUG = enabled;
}

void setSqlLoggingFilter(const QString& filter)
{
    SQL_DEBUG_FILTER = filter;
}

QString getLogDateTime()
{
    return QDateTime::currentDateTime().toString("[HH:mm:ss.zzz]");
}

void logSql(Db* db, const QString& str, const QHash<QString,QVariant>& args, Db::Flags flags)
{
    if (!SQL_DEBUG)
        return;

    if (!SQL_DEBUG_FILTER.isEmpty() && SQL_DEBUG_FILTER != db->getName())
        return;

    qDebug() << QString("SQL %1> %2").arg(db->getName()).arg(str) << "(flags:" << Db::flagsToString(flags) << ")";
    QHashIterator<QString,QVariant> it(args);
    while (it.hasNext())
    {
        it.next();
        qDebug() << "    SQL arg>" << it.key() << "=" << it.value();
    }
}

void logSql(Db* db, const QString& str, const QList<QVariant>& args, Db::Flags flags)
{
    if (!SQL_DEBUG)
        return;

    if (!SQL_DEBUG_FILTER.isEmpty() && SQL_DEBUG_FILTER != db->getName())
        return;

    qDebug() << QString("SQL %1> %2").arg(db->getName()).arg(str) << "(flags:" << Db::flagsToString(flags) << ")";
    int i = 0;
    for (const QVariant& arg : args)
        qDebug() << "    SQL arg>" << i++ << "=" << arg;
}

void setExecutorLoggingEnabled(bool enabled)
{
    EXECUTOR_DEBUG = enabled;
}

void logExecutorStep(QueryExecutorStep* step)
{
    if (!EXECUTOR_DEBUG)
        return;

    qDebug() << getLogDateTime() << "Executing step:" << step->metaObject()->className() << step->objectName();
}


void logExecutorAfterStep(const QString& str)
{
    if (!EXECUTOR_DEBUG)
        return;

    qDebug() << getLogDateTime() << str;
}

bool isExecutorLoggingEnabled()
{
    return EXECUTOR_DEBUG;
}