mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 21:20:31 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/**
 | 
						|
  @file
 | 
						|
  @author Stefan Frings
 | 
						|
*/
 | 
						|
 | 
						|
#include "logmessage.h"
 | 
						|
#include <QThread>
 | 
						|
 | 
						|
using namespace qtwebapp;
 | 
						|
 | 
						|
LogMessage::LogMessage(const QtMsgType type, const QString& message, QHash<QString, QString>* logVars, const QString &file, const QString &function, const int line)
 | 
						|
{
 | 
						|
    this->type=type;
 | 
						|
    this->message=message;
 | 
						|
    this->file=file;
 | 
						|
    this->function=function;
 | 
						|
    this->line=line;
 | 
						|
    timestamp=QDateTime::currentDateTime();
 | 
						|
    threadId=QThread::currentThreadId();
 | 
						|
 | 
						|
    // Copy the logVars if not null,
 | 
						|
    // so that later changes in the original do not affect the copy
 | 
						|
    if (logVars)
 | 
						|
    {
 | 
						|
        this->logVars=*logVars;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
QString LogMessage::toString(const QString& msgFormat, const QString& timestampFormat) const
 | 
						|
{
 | 
						|
    QString decorated=msgFormat+"\n";
 | 
						|
    decorated.replace("{msg}",message);
 | 
						|
 | 
						|
    if (decorated.contains("{timestamp}"))
 | 
						|
    {
 | 
						|
        decorated.replace("{timestamp}",timestamp.toString(timestampFormat));
 | 
						|
    }
 | 
						|
 | 
						|
    QString typeNr;
 | 
						|
    typeNr.setNum(type);
 | 
						|
    decorated.replace("{typeNr}",typeNr);
 | 
						|
 | 
						|
    switch (type)
 | 
						|
    {
 | 
						|
        case QtDebugMsg:
 | 
						|
            decorated.replace("{type}","(D)");
 | 
						|
            break;
 | 
						|
        case QtWarningMsg:
 | 
						|
            decorated.replace("{type}","(W)");
 | 
						|
            break;
 | 
						|
        case QtCriticalMsg:
 | 
						|
            decorated.replace("{type}","(C)");
 | 
						|
            break;
 | 
						|
        case QtFatalMsg:
 | 
						|
            decorated.replace("{type}","(F)");
 | 
						|
            break;
 | 
						|
    #if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0))
 | 
						|
        case QtInfoMsg:
 | 
						|
            decorated.replace("{type}","(I)");
 | 
						|
            break;
 | 
						|
    #endif
 | 
						|
        default:
 | 
						|
            decorated.replace("{type}",typeNr);
 | 
						|
    }
 | 
						|
 | 
						|
    decorated.replace("{file}",file);
 | 
						|
    decorated.replace("{function}",function);
 | 
						|
    decorated.replace("{line}",QString::number(line));
 | 
						|
 | 
						|
    QString threadId;
 | 
						|
    threadId.setNum((std::size_t)QThread::currentThreadId());
 | 
						|
    decorated.replace("{thread}",threadId);
 | 
						|
 | 
						|
    // Fill in variables
 | 
						|
    if (decorated.contains("{") && !logVars.isEmpty())
 | 
						|
    {
 | 
						|
        QList<QString> keys=logVars.keys();
 | 
						|
        foreach (QString key, keys)
 | 
						|
        {
 | 
						|
            decorated.replace("{"+key+"}",logVars.value(key));
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    return decorated;
 | 
						|
}
 | 
						|
 | 
						|
QtMsgType LogMessage::getType() const
 | 
						|
{
 | 
						|
    return type;
 | 
						|
}
 |