|
QGIS API Documentation
master-6227475
|
00001 /*************************************************************************** 00002 qgsmessagelog.h - interface for logging messages 00003 ---------------------- 00004 begin : October 2011 00005 copyright : (C) 2011 by Juergen E. Fischer 00006 email : jef at norbit dot de 00007 *************************************************************************** 00008 * * 00009 * This program is free software; you can redistribute it and/or modify * 00010 * it under the terms of the GNU General Public License as published by * 00011 * the Free Software Foundation; either version 2 of the License, or * 00012 * (at your option) any later version. * 00013 * * 00014 ***************************************************************************/ 00015 00016 #include "qgsmessagelog.h" 00017 #include <qgslogger.h> 00018 #include <QDateTime> 00019 #include <QMetaType> 00020 #include <iostream> 00021 00022 class QgsMessageLogConsole; 00023 00024 QgsMessageLog *QgsMessageLog::sInstance = 0; 00025 00026 QgsMessageLog::QgsMessageLog() 00027 : QObject() 00028 { 00029 sInstance = this; 00030 } 00031 00032 QgsMessageLog *QgsMessageLog::instance() 00033 { 00034 if ( !sInstance ) 00035 { 00036 qRegisterMetaType<QgsMessageLog::MessageLevel>( "QgsMessageLog::MessageLevel" ); 00037 sInstance = new QgsMessageLog(); 00038 } 00039 00040 return sInstance; 00041 } 00042 00043 void QgsMessageLog::logMessage( QString message, QString tag, QgsMessageLog::MessageLevel level ) 00044 { 00045 QgsDebugMsg( QString( "%1 %2[%3] %4" ).arg( QDateTime::currentDateTime().toString( Qt::ISODate ) ).arg( tag ).arg( level ).arg( message ) ); 00046 00047 QgsMessageLog::instance()->emitMessage( message, tag, level ); 00048 } 00049 00050 void QgsMessageLog::emitMessage( QString message, QString tag, QgsMessageLog::MessageLevel level ) 00051 { 00052 emit messageReceived( message, tag, level ); 00053 } 00054 00055 QgsMessageLogConsole::QgsMessageLogConsole() 00056 : QObject( QgsMessageLog::instance() ) 00057 { 00058 connect( QgsMessageLog::instance(), SIGNAL( messageReceived( QString, QString, QgsMessageLog::MessageLevel ) ), 00059 this, SLOT( logMessage( QString, QString, QgsMessageLog::MessageLevel ) ) ); 00060 } 00061 00062 void QgsMessageLogConsole::logMessage( QString message, QString tag, QgsMessageLog::MessageLevel level ) 00063 { 00064 std::cout 00065 << tag.toLocal8Bit().data() << "[" << 00066 ( level == QgsMessageLog::INFO ? "INFO" 00067 : level == QgsMessageLog::WARNING ? "WARNING" 00068 : "CRITICAL" ) 00069 << "]: " << message.toLocal8Bit().data() << std::endl; 00070 } 00071