00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "qgslogger.h"
00020 #include <QtDebug>
00021
00022 void QgsLogger::debug( const QString& msg, int debuglevel, const char* file, const char* function, int line )
00023 {
00024 const char* dfile = debugFile();
00025 if ( dfile )
00026 {
00027 if ( !file || strcmp( dfile, file ) != 0 )
00028 {
00029 return;
00030 }
00031 }
00032
00033 int dlevel = debugLevel();
00034 if ( dlevel >= debuglevel && debuglevel > 0 )
00035 {
00036 if ( file == NULL )
00037 {
00038 qDebug( "%s", msg.toLocal8Bit().constData() );
00039 }
00040 else if ( function == NULL )
00041 {
00042 qDebug( "%s: %s", file, msg.toLocal8Bit().constData() );
00043 }
00044 else if ( line == -1 )
00045 {
00046 qDebug( "%s: (%s) %s", file, function, msg.toLocal8Bit().constData() );
00047 }
00048 else
00049 {
00050 #ifndef _MSC_VER
00051 qDebug( "%s: %d: (%s) %s", file, line, function, msg.toLocal8Bit().constData() );
00052 #else
00053 qDebug( "%s(%d) : (%s) %s", file, line, function, msg.toLocal8Bit().constData() );
00054 #endif
00055 }
00056 }
00057 }
00058
00059 void QgsLogger::debug( const QString& var, int val, int debuglevel, const char* file, const char* function, int line )
00060 {
00061 const char* dfile = debugFile();
00062 if ( dfile )
00063 {
00064 if ( !file || strcmp( dfile, file ) != 0 )
00065 {
00066 return;
00067 }
00068 }
00069
00070 int dlevel = debugLevel();
00071 if ( dlevel >= debuglevel && debuglevel > 0 )
00072 {
00073 if ( file == NULL )
00074 {
00075 qDebug( "%s: %d", var.toLocal8Bit().constData(), val );
00076 }
00077 else if ( function == NULL )
00078 {
00079 qDebug( "%s: %s: %d", file, var.toLocal8Bit().constData(), val );
00080 }
00081 else if ( line == -1 )
00082 {
00083 qDebug( "%s: (%s): %s: %d", file, function, var.toLocal8Bit().constData(), val );
00084 }
00085 else
00086 {
00087 #ifdef _MSC_VER
00088 qDebug( "%s(%d): (%s), %s: %d", file, line, function, var.toLocal8Bit().constData(), val );
00089 #else
00090 qDebug( "%s: %d: (%s), %s: %d", file, line, function, var.toLocal8Bit().constData(), val );
00091 #endif
00092 }
00093 }
00094 }
00095
00096 void QgsLogger::debug( const QString& var, double val, int debuglevel, const char* file, const char* function, int line )
00097 {
00098 const char* dfile = debugFile();
00099 if ( dfile )
00100 {
00101 if ( !file || strcmp( dfile, file ) != 0 )
00102 {
00103 return;
00104 }
00105 }
00106
00107 int dlevel = debugLevel();
00108 if ( dlevel >= debuglevel && debuglevel > 0 )
00109 {
00110 if ( file == NULL )
00111 {
00112 qDebug( "%s: %f", var.toLocal8Bit().constData(), val );
00113 }
00114 else if ( function == NULL )
00115 {
00116 qDebug( "%s: %s: %f", file, var.toLocal8Bit().constData(), val );
00117 }
00118 else if ( line == -1 )
00119 {
00120 qDebug( "%s: (%s): %s: %f", file, function, var.toLocal8Bit().constData(), val );
00121 }
00122 else
00123 {
00124 #ifdef _MSC_VER
00125 qDebug( "%s(%d): (%s), %s: %f", file, line, function, var.toLocal8Bit().constData(), val );
00126 #else
00127 qDebug( "%s: %d: (%s), %s: %f", file, line, function, var.toLocal8Bit().constData(), val );
00128 #endif
00129 }
00130 }
00131 }
00132
00133 void QgsLogger::warning( const QString& msg )
00134 {
00135 qWarning( "%s", msg.toLocal8Bit().constData() );
00136 }
00137
00138 void QgsLogger::critical( const QString& msg )
00139 {
00140 qCritical( "%s", msg.toLocal8Bit().constData() );
00141 }
00142
00143 void QgsLogger::fatal( const QString& msg )
00144 {
00145 qFatal( "%s", msg.toLocal8Bit().constData() );
00146 }
00147
00148 int QgsLogger::debugLevel()
00149 {
00150 const char* dlevel = getenv( "QGIS_DEBUG" );
00151 if ( dlevel == NULL )
00152 {
00153 #ifdef QGISDEBUG
00154 return 1;
00155 #else
00156 return 0;
00157 #endif
00158 }
00159 int level = atoi( dlevel );
00160 #ifdef QGISDEBUG
00161 if ( level == 0 )
00162 {
00163 level = 1;
00164 }
00165 #endif
00166 return level;
00167 }
00168
00169 const char* QgsLogger::debugFile()
00170 {
00171 const char* dfile = getenv( "QGIS_DEBUG_FILE" );
00172 return dfile;
00173 }