Go to the documentation of this file.00001
00006 #include "logmessage.h"
00007 #include <QThread>
00008
00009 LogMessage::LogMessage(const QtMsgType type, const QString& message, QHash<QString,QString>* logVars) {
00010 this->type=type;
00011 this->message=message;
00012 timestamp=QDateTime::currentDateTime();
00013 threadId=QThread::currentThreadId();
00014
00015
00016
00017 if (logVars) {
00018 this->logVars=*logVars;
00019 }
00020 }
00021
00022 QString LogMessage::toString(const QString& msgFormat, const QString& timestampFormat) const {
00023 QString decorated=msgFormat+"\n";
00024 decorated.replace("{msg}",message);
00025
00026 if (decorated.contains("{timestamp}")) {
00027 decorated.replace("{timestamp}",QDateTime::currentDateTime().toString(timestampFormat));
00028 }
00029
00030 QString typeNr;
00031 typeNr.setNum(type);
00032 decorated.replace("{typeNr}",typeNr);
00033
00034 switch (type) {
00035 case QtDebugMsg:
00036 decorated.replace("{type}","DEBUG");
00037 break;
00038 case QtWarningMsg:
00039 decorated.replace("{type}","WARNING");
00040 break;
00041 case QtCriticalMsg:
00042 decorated.replace("{type}","CRITICAL");
00043 break;
00044 case QtFatalMsg:
00045 decorated.replace("{type}","FATAL");
00046 break;
00047 default:
00048 decorated.replace("{type}",typeNr);
00049 }
00050
00051 QString threadId;
00052 threadId.setNum((unsigned int)QThread::currentThreadId());
00053 decorated.replace("{thread}",threadId);
00054
00055
00056 if (decorated.contains("{") && !logVars.isEmpty()) {
00057 QList<QString> keys=logVars.keys();
00058 foreach (QString key, keys) {
00059 decorated.replace("{"+key+"}",logVars.value(key));
00060 }
00061 }
00062
00063 return decorated;
00064 }
00065
00066 QtMsgType LogMessage::getType() const {
00067 return type;
00068 }