QGIS API Documentation 3.99.0-Master (a8882ad4560)
Loading...
Searching...
No Matches
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 "qgsconfig.h"
22
23#include <iostream>
24#include <sstream>
25
26#include "qgis_core.h"
27#include "qgis_sip.h"
28
29#include <QString>
30#include <QTime>
31
32using namespace Qt::StringLiterals;
33
34class QFile;
35
36#ifndef SIP_RUN
37
38#ifdef QGISDEBUG
39#define QgsDebugError( str ) QgsLogger::debug( QString( str ), 0, __FILE__, __FUNCTION__, __LINE__ )
40#define QgsDebugMsgLevel( str, level ) \
41 if ( ( level ) <= QgsLogger::debugLevel() ) \
42 { \
43 QgsLogger::debug( QString( str ), ( level ), __FILE__, __FUNCTION__, __LINE__ ); \
44 } \
45 ( void ) ( 0 )
46#define QgsDebugErrorLoc( str, file, func, line ) QgsLogger::debug( QString( str ), 0, ( file ), ( func ), ( line ) )
47#define QgsDebugMsgLevelLoc( str, level, file, func, line ) \
48 if ( ( level ) <= QgsLogger::debugLevel() ) \
49 { \
50 QgsLogger::debug( QString( str ), ( level ), ( file ), ( func ), ( line ) ); \
51 } \
52 ( void ) ( 0 )
53#define QgsDebugCall QgsScopeLogger _qgsScopeLogger( __FILE__, __FUNCTION__, __LINE__ )
54#else
55#define QgsDebugCall \
56 do \
57 { \
58 } while ( false )
59#define QgsDebugError( str ) \
60 do \
61 { \
62 } while ( false )
63#define QgsDebugMsgLevel( str, level ) \
64 do \
65 { \
66 } while ( false )
67#define QgsDebugErrorLoc( str, file, func, line ) \
68 do \
69 { \
70 } while ( false )
71#define QgsDebugMsgLevelLoc( str, level, file, func, line ) \
72 do \
73 { \
74 } while ( false )
75#endif
76
77#endif
78
79
97
98class CORE_EXPORT QgsLogger
99{
100 public:
101
110 static void debug( const QString &msg, int debuglevel = 1, const char *file = nullptr, const char *function = nullptr, int line = -1 );
111
113 static void debug( const QString &var, int val, int debuglevel = 1, const char *file = nullptr, const char *function = nullptr, int line = -1 );
114
119 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;
120
125 template <typename T> static void debug( const QString &var, T val, const char *file = nullptr, const char *function = nullptr,
126 int line = -1, int debuglevel = 1 ) SIP_SKIP SIP_SKIP
127 {
128 std::ostringstream os;
129 os << var.toLocal8Bit().data() << " = " << val;
130 debug( var, os.str().c_str(), file, function, line, debuglevel );
131 }
132
134 static void warning( const QString &msg );
135
137 static void critical( const QString &msg );
138
140 static void fatal( const QString &msg );
141
146 static int debugLevel()
147 {
148 if ( sDebugLevel == -999 )
149 init();
150 return sDebugLevel;
151 }
152
154 static void logMessageToFile( const QString &message );
155
160 static QString logFile();
161
162 private:
163 static void init();
164
166 static int sDebugLevel;
167 static int sPrefixLength;
168};
169
174class CORE_EXPORT QgsScopeLogger // clazy:exclude=rule-of-three
175{
176 public:
177 QgsScopeLogger( const char *file, const char *func, int line )
178 : _file( file )
179 , _func( func )
180 , _line( line )
181 {
182 QgsLogger::debug( u"Entering."_s, 2, _file, _func, _line );
183 }
185 {
186 QgsLogger::debug( u"Leaving."_s, 2, _file, _func, _line );
187 }
188 private:
189 const char *_file = nullptr;
190 const char *_func = nullptr;
191 int _line;
192};
193
194#endif
Responsible for printing debug/warning/error messages to the console.
Definition qgslogger.h:99
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:59
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:125
static int debugLevel()
Reads the environment variable QGIS_DEBUG and converts it to int.
Definition qgslogger.h:146
QgsScopeLogger(const char *file, const char *func, int line)
Definition qgslogger.h:177
#define SIP_SKIP
Definition qgis_sip.h:134