Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsmessagelog.h - interface for logging messages 3 : : ---------------------- 4 : : begin : October 2011 5 : : copyright : (C) 2011 by Juergen E. Fischer 6 : : email : jef at norbit dot de 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : 16 : : #include "qgsmessagelog.h" 17 : : #include "qgsapplication.h" 18 : : #include "qgslogger.h" 19 : : #include <QDateTime> 20 : : #include <QMetaType> 21 : : #include <QTextStream> 22 : : #include <iostream> 23 : : #include <stdio.h> 24 : : 25 : : class QgsMessageLogConsole; 26 : : 27 : 3 : void QgsMessageLog::logMessage( const QString &message, const QString &tag, Qgis::MessageLevel level, bool notifyUser ) 28 : : { 29 : 3 : QgsDebugMsg( QStringLiteral( "%1 %2[%3] %4" ).arg( QDateTime::currentDateTime().toString( Qt::ISODate ), tag ).arg( level ).arg( message ) ); 30 : : 31 : 3 : QgsApplication::messageLog()->emitMessage( message, tag, level, notifyUser ); 32 : 3 : } 33 : : 34 : 3 : void QgsMessageLog::emitMessage( const QString &message, const QString &tag, Qgis::MessageLevel level, bool notifyUser ) 35 : : { 36 : 3 : emit messageReceived( message, tag, level ); 37 : 3 : if ( level != Qgis::Info && notifyUser && mAdviseBlockCount == 0 ) 38 : : { 39 : 3 : emit messageReceived( true ); 40 : 3 : } 41 : 3 : } 42 : : 43 : 0 : QgsMessageLogConsole::QgsMessageLogConsole() 44 : 0 : : QObject( QgsApplication::messageLog() ) 45 : 0 : { 46 : 0 : connect( QgsApplication::messageLog(), static_cast < void ( QgsMessageLog::* )( const QString &, const QString &, Qgis::MessageLevel ) >( &QgsMessageLog::messageReceived ), 47 : : this, &QgsMessageLogConsole::logMessage ); 48 : 0 : } 49 : : 50 : 0 : void QgsMessageLogConsole::logMessage( const QString &message, const QString &tag, Qgis::MessageLevel level ) 51 : : { 52 : 0 : QString formattedMessage = formatLogMessage( message, tag, level ); 53 : 0 : QTextStream cerr( stderr ); 54 : 0 : cerr << formattedMessage; 55 : 0 : } 56 : : 57 : 0 : QString QgsMessageLogConsole::formatLogMessage( const QString &message, const QString &tag, Qgis::MessageLevel level ) const 58 : : { 59 : 0 : const QString time = QTime::currentTime().toString(); 60 : 0 : const QString levelStr = level == Qgis::Info ? QStringLiteral( "INFO" ) : 61 : 0 : level == Qgis::Warning ? QStringLiteral( "WARNING" ) : 62 : 0 : QStringLiteral( "CRITICAL" ); 63 : 0 : const QString pid = QString::number( QCoreApplication::applicationPid() ); 64 : 0 : return QStringLiteral( "%1 %2 %3[%4]: %5\n" ).arg( time, levelStr, tag, pid, message ); 65 : 0 : } 66 : : 67 : : // 68 : : // QgsMessageLogNotifyBlocker 69 : : // 70 : : 71 : 0 : QgsMessageLogNotifyBlocker::QgsMessageLogNotifyBlocker() 72 : : { 73 : 0 : QgsApplication::messageLog()->mAdviseBlockCount++; 74 : 0 : } 75 : : 76 : 0 : QgsMessageLogNotifyBlocker::~QgsMessageLogNotifyBlocker() 77 : : { 78 : 0 : QgsApplication::messageLog()->mAdviseBlockCount--; 79 : 0 : }