70 lines
2.2 KiB
C++
70 lines
2.2 KiB
C++
/****************************************************************************
|
|
** Modern Linbo GUI
|
|
** Copyright (C) 2020 Dorian Zedler <dorian@itsblue.de>
|
|
**
|
|
** This program is free software: you can redistribute it and/or modify
|
|
** it under the terms of the GNU Affero General Public License as published
|
|
** by the Free Software Foundation, either version 3 of the License, or
|
|
** (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU Affero General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU Affero General Public License
|
|
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
****************************************************************************/
|
|
|
|
#include "linbologger.h"
|
|
|
|
LinboLogger::LinboLogger(QString logFilePath, QObject *parent) : QObject(parent)
|
|
{
|
|
this->logFilePath = logFilePath;
|
|
}
|
|
|
|
QString LinboLogger::logTypeToString(LinboLogType logType) {
|
|
switch (logType) {
|
|
case StdErr:
|
|
return "StrErr";
|
|
case StdOut:
|
|
return "StdOut";
|
|
case LinboGuiInfo:
|
|
return "Info";
|
|
case LinboGuiError:
|
|
return "Error";
|
|
default:
|
|
return "UNKNOW";
|
|
}
|
|
}
|
|
|
|
void LinboLogger::log(QString logText, LinboLogType logType) {
|
|
if(logText.isEmpty() || logText == "")
|
|
return;
|
|
qDebug() << qPrintable("[" + this->logTypeToString(logType) + "]") << logText;
|
|
|
|
LinboLog latestLog {logText, logType, QDateTime::currentDateTime()};
|
|
this->logHistory.append(latestLog);
|
|
|
|
// TODO: Log error, when this fails
|
|
this->writeToLogFile("[" + this->logTypeToString(logType) + "]" + logText);
|
|
|
|
emit this->latestLogChanged(latestLog);
|
|
}
|
|
|
|
bool LinboLogger::writeToLogFile(QString text) {
|
|
// write to logfile
|
|
QFile logfile(this->logFilePath);
|
|
if(!logfile.open( QIODevice::WriteOnly | QIODevice::Append ))
|
|
return false;
|
|
|
|
QTextStream logstream( &logfile );
|
|
logstream << text << "\n";
|
|
logfile.flush();
|
|
logfile.close();
|
|
return true;
|
|
}
|
|
|
|
const LinboLogger::LinboLog& LinboLogger::getLatestLog() {
|
|
return this->logHistory.last();
|
|
}
|