QGIS API Documentation 3.27.0-Master (75dc696944)
qgslogger.h
Go to the documentation of this file.
1/***************************************************************************
2 qgslogger.h - description
3 -------------------
4 begin : April 2006
5 copyright : (C) 2006 by Marco Hugentobler
6 email : marco.hugentobler at karto dot baug dot ethz dot ch
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSLOGGER_H
19#define QGSLOGGER_H
20
21#include <iostream>
22#include "qgis_sip.h"
23#include <sstream>
24#include <QString>
25#include <QTime>
26
27#include "qgis_core.h"
28#include "qgsconfig.h"
29
30class QFile;
31
32#ifdef QGISDEBUG
33#define QgsDebugMsg(str) QgsLogger::debug(QString(str), 1, __FILE__, __FUNCTION__, __LINE__)
34#define QgsDebugMsgLevel(str, level) if ( level <= QgsLogger::debugLevel() ) { QgsLogger::debug(QString(str), (level), __FILE__, __FUNCTION__, __LINE__); }(void)(0)
35#define QgsDebugCall QgsScopeLogger _qgsScopeLogger(__FILE__, __FUNCTION__, __LINE__)
36#else
37#define QgsDebugCall do {} while(false)
38#define QgsDebugMsg(str) do {} while(false)
39#define QgsDebugMsgLevel(str, level) do {} while(false)
40#endif
41
60class CORE_EXPORT QgsLogger
61{
62 public:
63
72 static void debug( const QString &msg, int debuglevel = 1, const char *file = nullptr, const char *function = nullptr, int line = -1 );
73
75 static void debug( const QString &var, int val, int debuglevel = 1, const char *file = nullptr, const char *function = nullptr, int line = -1 );
76
81 static void debug( const QString &var, double val, int debuglevel = 1, const char *file = nullptr, const char *function = nullptr, int line = -1 ) SIP_SKIP SIP_SKIP;
82
87 template <typename T> static void debug( const QString &var, T val, const char *file = nullptr, const char *function = nullptr,
88 int line = -1, int debuglevel = 1 ) SIP_SKIP SIP_SKIP
89 {
90 std::ostringstream os;
91 os << var.toLocal8Bit().data() << " = " << val;
92 debug( var, os.str().c_str(), file, function, line, debuglevel );
93 }
94
96 static void warning( const QString &msg );
97
99 static void critical( const QString &msg );
100
102 static void fatal( const QString &msg );
103
108 static int debugLevel()
109 {
110 if ( sDebugLevel == -999 )
111 init();
112 return sDebugLevel;
113 }
114
116 static void logMessageToFile( const QString &message );
117
122 static QString logFile();
123
124 private:
125 static void init();
126
128 static int sDebugLevel;
129 static int sPrefixLength;
130};
131
135class CORE_EXPORT QgsScopeLogger // clazy:exclude=rule-of-three
136{
137 public:
138 QgsScopeLogger( const char *file, const char *func, int line )
139 : _file( file )
140 , _func( func )
141 , _line( line )
142 {
143 QgsLogger::debug( QStringLiteral( "Entering." ), 2, _file, _func, _line );
144 }
146 {
147 QgsLogger::debug( QStringLiteral( "Leaving." ), 2, _file, _func, _line );
148 }
149 private:
150 const char *_file = nullptr;
151 const char *_func = nullptr;
152 int _line;
153};
154
155#endif
QgsLogger is a class to print debug/warning/error messages to the console.
Definition: qgslogger.h:61
static void debug(const QString &msg, int debuglevel=1, const char *file=nullptr, const char *function=nullptr, int line=-1)
Goes to qDebug.
Definition: qgslogger.cpp:58
static void debug(const QString &var, T val, const char *file=nullptr, const char *function=nullptr, int line=-1, int debuglevel=1)
Prints out a variable/value pair for types with overloaded operator<<.
Definition: qgslogger.h:87
static int debugLevel()
Reads the environment variable QGIS_DEBUG and converts it to int.
Definition: qgslogger.h:108
QgsScopeLogger(const char *file, const char *func, int line)
Definition: qgslogger.h:138
#define SIP_SKIP
Definition: qgis_sip.h:126