You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.6 KiB

2 years ago
#include "logger.h"
#include <QDateTime>
#include <QDir>
#include <QObject>
QFile* Logger::_logFile = Q_NULLPTR;
QHash<QtMsgType, QString> Logger::_logTitles = {
{QtMsgType::QtDebugMsg, " Debug "},
{QtMsgType::QtInfoMsg, " Info "},
{QtMsgType::QtWarningMsg, "Warning "},
{QtMsgType::QtCriticalMsg, "Critical"},
{QtMsgType::QtFatalMsg, " Fatal "}
};
Logger::Logger(QString fileName)
{
_logFile = new QFile;
_logFile->setFileName(fileName);
_logFile->open(QIODevice::Append | QIODevice::Text);
qInstallMessageHandler(Logger::messageOutput);
}
Logger::~Logger()
{
qInfo() << "The Logger closed" << "\n";
2 years ago
delete _logFile;
}
void Logger::clearLog()
2 years ago
{
if(_logFile)
{
_logFile->resize(0);
}
}
void Logger::makeStartingLine()
{
if(_logFile)
{
_logFile->write(
"**************************************************************************************\n");
_logFile->flush();
}
2 years ago
}
void Logger::messageOutput(QtMsgType type, const QMessageLogContext& context, const QString& msg)
{
QString log = QObject::tr("%1 | %2 | %3 | %4 | %5\n").
2 years ago
arg(QDateTime::currentDateTime().toString("yyyy/MM/dd - hh:mm:ss")).
arg(Logger::_logTitles.value(type)).
arg(context.line).
arg(QString(context.function).section('(', -2, -2). //Function name only
2 years ago
section(' ', -1).
section(':', -1)).
arg(msg);
_logFile->write(log.toLocal8Bit());
_logFile->flush();
}