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
