QGISのソースを確認すると「QgsDebugMsg」で多くのログが吐かれている。
これはQGISの内部の動作を追うには大変参考になる。
※レンダリング関係はデバッカーで追うのは大変。
実際にqgslogger.cppを確認すると下記の環境変数を設定する必要がある。
QGIS_DEBUG:1
QGIS_LOG_FILE:ログファイルのフルパス
※QGIS_DEBUG_FILEは不明
int QgsLogger::sDebugLevel = -999; // undefined value int QgsLogger::sPrefixLength = -1; QString QgsLogger::sFileFilter; QString QgsLogger::sLogFile; QTime QgsLogger::sTime; void QgsLogger::init() { if ( sDebugLevel != -999 ) return; sTime.start(); sLogFile = getenv( "QGIS_LOG_FILE" ) ? getenv( "QGIS_LOG_FILE" ) : ""; sFileFilter = getenv( "QGIS_DEBUG_FILE" ) ? getenv( "QGIS_DEBUG_FILE" ) : ""; sDebugLevel = getenv( "QGIS_DEBUG" ) ? atoi( getenv( "QGIS_DEBUG" ) ) : #ifdef QGISDEBUG 1 #else 0 #endif ; sPrefixLength = sizeof( CMAKE_SOURCE_DIR ); if ( CMAKE_SOURCE_DIR[sPrefixLength-1] == '/' ) sPrefixLength++; } void QgsLogger::logMessageToFile( const QString& theMessage ) { if ( sLogFile.isEmpty() ) return; //Maybe more efficient to keep the file open for the life of qgis... QFile file( sLogFile ); if ( !file.open( QIODevice::Append ) ) return; file.write( theMessage.toLocal8Bit().constData() ); file.write( "\n" ); file.close(); }
qgis起動バッチ(qgis.bat)に以下を記述してQGISを起動すると指定されたログが出力される
set QGIS_LOG_FILE=C:\QGIS\log.txt set QGIS_DEBUG=1