QGIS API Documentation 4.1.0-Master (60fea48833c)
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:
109 static void debug( const QString &msg, int debuglevel = 1, const char *file = nullptr, const char *function = nullptr, int line = -1 );
110
112 static void debug( const QString &var, int val, int debuglevel = 1, const char *file = nullptr, const char *function = nullptr, int line = -1 );
113
118 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;
119
124 template<typename T> static void debug( const QString &var, T val, const char *file = nullptr, const char *function = nullptr, int line = -1, int debuglevel = 1 ) SIP_SKIP SIP_SKIP
125 {
126 std::ostringstream os;
127 os << var.toLocal8Bit().data() << " = " << val;
128 debug( var, os.str().c_str(), file, function, line, debuglevel );
129 }
130
132 static void warning( const QString &msg );
133
135 static void critical( const QString &msg );
136
138 static void fatal( const QString &msg );
139
144 static int debugLevel()
145 {
146 if ( sDebugLevel == -999 )
147 init();
148 return sDebugLevel;
149 }
150
152 static void logMessageToFile( const QString &message );
153
167 static QString logFile();
168
169 private:
170 static void init();
171
173 static int sDebugLevel;
174 static int sPrefixLength;
175};
176
181class CORE_EXPORT QgsScopeLogger // clazy:exclude=rule-of-three
182{
183 public:
184 QgsScopeLogger( const char *file, const char *func, int line )
185 : _file( file )
186 , _func( func )
187 , _line( line )
188 {
189 QgsLogger::debug( u"Entering."_s, 2, _file, _func, _line );
190 }
191 ~QgsScopeLogger() { QgsLogger::debug( u"Leaving."_s, 2, _file, _func, _line ); }
192
193 private:
194 const char *_file = nullptr;
195 const char *_func = nullptr;
196 int _line;
197};
198
199#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:62
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:124
static int debugLevel()
Reads the environment variable QGIS_DEBUG and converts it to int.
Definition qgslogger.h:144
QgsScopeLogger(const char *file, const char *func, int line)
Definition qgslogger.h:184
#define SIP_SKIP
Definition qgis_sip.h:133