QGIS API Documentation 3.99.0-Master (21b3aa880ba)
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
32class QFile;
33
34#ifndef SIP_RUN
35
36#ifdef QGISDEBUG
37#define QgsDebugError( str ) QgsLogger::debug( QString( str ), 0, __FILE__, __FUNCTION__, __LINE__ )
38#define QgsDebugMsgLevel( str, level ) \
39 if ( ( level ) <= QgsLogger::debugLevel() ) \
40 { \
41 QgsLogger::debug( QString( str ), ( level ), __FILE__, __FUNCTION__, __LINE__ ); \
42 } \
43 ( void ) ( 0 )
44#define QgsDebugErrorLoc( str, file, func, line ) QgsLogger::debug( QString( str ), 0, ( file ), ( func ), ( line ) )
45#define QgsDebugMsgLevelLoc( str, level, file, func, line ) \
46 if ( ( level ) <= QgsLogger::debugLevel() ) \
47 { \
48 QgsLogger::debug( QString( str ), ( level ), ( file ), ( func ), ( line ) ); \
49 } \
50 ( void ) ( 0 )
51#define QgsDebugCall QgsScopeLogger _qgsScopeLogger( __FILE__, __FUNCTION__, __LINE__ )
52#else
53#define QgsDebugCall \
54 do \
55 { \
56 } while ( false )
57#define QgsDebugError( str ) \
58 do \
59 { \
60 } while ( false )
61#define QgsDebugMsgLevel( str, level ) \
62 do \
63 { \
64 } while ( false )
65#define QgsDebugErrorLoc( str, file, func, line ) \
66 do \
67 { \
68 } while ( false )
69#define QgsDebugMsgLevelLoc( str, level, file, func, line ) \
70 do \
71 { \
72 } while ( false )
73#endif
74
75#endif
76
77
95
96class CORE_EXPORT QgsLogger
97{
98 public:
99
108 static void debug( const QString &msg, int debuglevel = 1, const char *file = nullptr, const char *function = nullptr, int line = -1 );
109
111 static void debug( const QString &var, int val, int debuglevel = 1, const char *file = nullptr, const char *function = nullptr, int line = -1 );
112
117 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;
118
123 template <typename T> static void debug( const QString &var, T val, const char *file = nullptr, const char *function = nullptr,
124 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
158 static QString logFile();
159
160 private:
161 static void init();
162
164 static int sDebugLevel;
165 static int sPrefixLength;
166};
167
172class CORE_EXPORT QgsScopeLogger // clazy:exclude=rule-of-three
173{
174 public:
175 QgsScopeLogger( const char *file, const char *func, int line )
176 : _file( file )
177 , _func( func )
178 , _line( line )
179 {
180 QgsLogger::debug( QStringLiteral( "Entering." ), 2, _file, _func, _line );
181 }
183 {
184 QgsLogger::debug( QStringLiteral( "Leaving." ), 2, _file, _func, _line );
185 }
186 private:
187 const char *_file = nullptr;
188 const char *_func = nullptr;
189 int _line;
190};
191
192#endif
Responsible for printing debug/warning/error messages to the console.
Definition qgslogger.h:97
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:123
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:175
#define SIP_SKIP
Definition qgis_sip.h:134