00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef QGSLOGGER_H
00019 #define QGSLOGGER_H
00020
00021 #include <iostream>
00022 #include <sstream>
00023 #include <QString>
00024
00025 #ifdef QGISDEBUG
00026 #define QgsDebugMsg(str) QgsLogger::debug(QString(str), 1, __FILE__, __FUNCTION__, __LINE__)
00027 #define QgsDebugMsgLevel(str, level) QgsLogger::debug(QString(str), level,\
00028 __FILE__, __FUNCTION__, __LINE__)
00029 #else
00030 #define QgsDebugMsg(str)
00031 #define QgsDebugMsgLevel(str, level)
00032 #endif
00033
00047 class CORE_EXPORT QgsLogger
00048 {
00049 public:
00050
00057 static void debug( const QString& msg, int debuglevel = 1, const char* file = NULL, const char* function = NULL, int line = -1 );
00058
00060 static void debug( const QString& var, int val, int debuglevel = 1, const char* file = NULL, const char* function = NULL, int line = -1 );
00061
00063 static void debug( const QString& var, double val, int debuglevel = 1, const char* file = NULL, const char* function = NULL, int line = -1 );
00064
00066 template <typename T> static void debug( const QString& var, T val, const char* file = 0, const char* function = 0,
00067 int line = -1, int debuglevel = 1 )
00068 {
00069 const char* dfile = debugFile();
00070 if ( dfile )
00071 {
00072 if ( !file || strcmp( dfile, file ) != 0 )
00073 {
00074 return;
00075 }
00076 }
00077 std::ostringstream os;
00078 os << var.toLocal8Bit().data() << " = " << val;
00079 if ( line == -1 )
00080 {
00081 qDebug( "%s: (%s) %s", file, function, os.str().c_str() );
00082 }
00083 else
00084 {
00085 #if defined(_MSC_VER)
00086 qDebug( "%s(%d): (%s) %s", file, line, function, os.str().c_str() );
00087 #else
00088 qDebug( "%s: %d: (%s) %s", file, line, function, os.str().c_str() );
00089 #endif
00090 }
00091 }
00092
00094 static void warning( const QString& msg );
00095
00097 static void critical( const QString& msg );
00098
00100 static void fatal( const QString& msg );
00101
00102 private:
00105 static int debugLevel();
00106
00108 static const char* debugFile();
00109 };
00110
00111 #endif