1818
1919#include " qgslogger.h"
2020#include < QtDebug>
21+ #include < QFile>
2122
2223int QgsLogger::mDebugLevel = -999 ; // undefined value
2324
@@ -38,14 +39,17 @@ void QgsLogger::debug( const QString& msg, int debuglevel, const char* file, con
3839 if ( file == NULL )
3940 {
4041 qDebug ( " %s" , msg.toLocal8Bit ().constData () );
42+ logMessageToFile ( msg );
4143 }
4244 else if ( function == NULL )
4345 {
4446 qDebug ( " %s: %s" , file, msg.toLocal8Bit ().constData () );
47+ logMessageToFile ( msg );
4548 }
4649 else if ( line == -1 )
4750 {
4851 qDebug ( " %s: (%s) %s" , file, function, msg.toLocal8Bit ().constData () );
52+ logMessageToFile ( msg );
4953 }
5054 else
5155 {
@@ -54,6 +58,7 @@ void QgsLogger::debug( const QString& msg, int debuglevel, const char* file, con
5458#else
5559 qDebug ( " %s(%d) : (%s) %s" , file, line, function, msg.toLocal8Bit ().constData () );
5660#endif
61+ logMessageToFile ( msg );
5762 }
5863 }
5964}
@@ -75,14 +80,17 @@ void QgsLogger::debug( const QString& var, int val, int debuglevel, const char*
7580 if ( file == NULL )
7681 {
7782 qDebug ( " %s: %d" , var.toLocal8Bit ().constData (), val );
83+ logMessageToFile ( QString ( " %s: %d" ).arg ( var.toLocal8Bit ().constData () ).arg ( val ) );
7884 }
7985 else if ( function == NULL )
8086 {
8187 qDebug ( " %s: %s: %d" , file, var.toLocal8Bit ().constData (), val );
88+ logMessageToFile ( QString ( " %s: %s: %d" ).arg ( file ).arg ( var.toLocal8Bit ().constData () ).arg ( val ) );
8289 }
8390 else if ( line == -1 )
8491 {
8592 qDebug ( " %s: (%s): %s: %d" , file, function, var.toLocal8Bit ().constData (), val );
93+ logMessageToFile ( QString ( " %s: (%s): %s: %d" ).arg ( file ).arg ( function ).arg ( var.toLocal8Bit ().constData () ).arg ( val ) );
8694 }
8795 else
8896 {
@@ -91,6 +99,7 @@ void QgsLogger::debug( const QString& var, int val, int debuglevel, const char*
9199#else
92100 qDebug ( " %s: %d: (%s), %s: %d" , file, line, function, var.toLocal8Bit ().constData (), val );
93101#endif
102+ logMessageToFile ( QString ( " %s: %d: (%s), %s: %d" ).arg ( file ).arg ( line ).arg ( function ).arg ( var.toLocal8Bit ().constData () ).arg ( val ) );
94103 }
95104 }
96105}
@@ -112,14 +121,17 @@ void QgsLogger::debug( const QString& var, double val, int debuglevel, const cha
112121 if ( file == NULL )
113122 {
114123 qDebug ( " %s: %f" , var.toLocal8Bit ().constData (), val );
124+ logMessageToFile ( QString ( " %s: %f" ).arg ( var.toLocal8Bit ().constData () ).arg ( val ) );
115125 }
116126 else if ( function == NULL )
117127 {
118128 qDebug ( " %s: %s: %f" , file, var.toLocal8Bit ().constData (), val );
129+ logMessageToFile ( QString ( " %s: %s: %f" ).arg ( file ).arg ( var.toLocal8Bit ().constData () ).arg ( val ) );
119130 }
120131 else if ( line == -1 )
121132 {
122133 qDebug ( " %s: (%s): %s: %f" , file, function, var.toLocal8Bit ().constData (), val );
134+ logMessageToFile ( QString ( " %s: (%s): %s: %f" ).arg ( file ).arg ( function ).arg ( var.toLocal8Bit ().constData () ).arg ( val ) );
123135 }
124136 else
125137 {
@@ -128,23 +140,27 @@ void QgsLogger::debug( const QString& var, double val, int debuglevel, const cha
128140#else
129141 qDebug ( " %s: %d: (%s), %s: %f" , file, line, function, var.toLocal8Bit ().constData (), val );
130142#endif
143+ logMessageToFile ( QString ( " %s: %d: (%s), %s: %f" ).arg ( file ).arg ( line ).arg ( function ).arg ( var.toLocal8Bit ().constData () ).arg ( val ) );
131144 }
132145 }
133146}
134147
135148void QgsLogger::warning ( const QString& msg )
136149{
137150 qWarning ( " %s" , msg.toLocal8Bit ().constData () );
151+ logMessageToFile ( msg );
138152}
139153
140154void QgsLogger::critical ( const QString& msg )
141155{
142156 qCritical ( " %s" , msg.toLocal8Bit ().constData () );
157+ logMessageToFile ( msg );
143158}
144159
145160void QgsLogger::fatal ( const QString& msg )
146161{
147162 qFatal ( " %s" , msg.toLocal8Bit ().constData () );
163+ logMessageToFile ( msg );
148164}
149165
150166int QgsLogger::debugLevel ()
@@ -178,6 +194,26 @@ int QgsLogger::debugLevel()
178194 return mDebugLevel ;
179195}
180196
197+ const QString QgsLogger::logFile ()
198+ {
199+ const QString logFile = getenv ( " QGIS_LOG_FILE" );
200+ return logFile;
201+ }
202+
203+ const void QgsLogger::logMessageToFile ( QString theMessage )
204+ {
205+ if ( ! logFile ().isEmpty () )
206+ {
207+ // Maybe more efficient to keep the file open for the life of qgis...
208+ QFile file ( logFile () );
209+ file.open (QIODevice::Append);
210+ file.write ( theMessage.toStdString ().c_str () );
211+ file.write ( " \n " );
212+ file.close ();
213+ }
214+ return ;
215+ }
216+
181217const char * QgsLogger::debugFile ()
182218{
183219 const char * dfile = getenv ( " QGIS_DEBUG_FILE" );
0 commit comments