mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
139 lines
3.0 KiB
C++
139 lines
3.0 KiB
C++
#include "logger.h"
|
|
|
|
#include <QThread>
|
|
|
|
Logger::Logger()
|
|
{
|
|
connect(this,&Logger::sigAddToLogger, this, &Logger::handleLog,Qt::AutoConnection);
|
|
createDirectory();
|
|
}
|
|
|
|
Logger &Logger::instance()
|
|
{
|
|
static Logger logger;
|
|
return logger;
|
|
}
|
|
|
|
Logger::~Logger()
|
|
{
|
|
|
|
}
|
|
|
|
void Logger::setLoggingType(LoggingType type)
|
|
{
|
|
this->loggingType = type;
|
|
}
|
|
|
|
void Logger::log(QString message, LogLevel level)
|
|
{
|
|
emit sigAddToLogger(message,level);
|
|
}
|
|
|
|
void Logger::setLogFile(QString filePath)
|
|
{
|
|
QMutexLocker locker(&mutex);
|
|
if (logFile.isOpen())
|
|
{
|
|
logFile.close();
|
|
}
|
|
|
|
logFile.setFileName(filePath);
|
|
logFile.open(QIODevice::WriteOnly | QIODevice::Append);
|
|
}
|
|
|
|
void Logger::setLogToFile(bool flag)
|
|
{
|
|
isLogToFile = flag;
|
|
if (flag)
|
|
{
|
|
QString filePath = logFolderPath + "/" + "log " + QDateTime::currentDateTime().toString("dd-MM-yyyy")+".txt";
|
|
setLogFile(filePath);
|
|
}
|
|
}
|
|
|
|
void Logger::handleLog(QString msg, LogLevel logLevel)
|
|
{
|
|
/*
|
|
color: red; * Красный *
|
|
color: green; * Зелёный *
|
|
color: blue; * Синий *
|
|
color: yellow; * Жёлтый *
|
|
color: black; * Чёрный *
|
|
color: white; * Белый *
|
|
color: purple; * Фиолетовый *
|
|
color: orange; * Оранжевый *
|
|
color: pink; * Розовый *
|
|
color: brown; * Коричневый *
|
|
color: gray; * Серый *
|
|
*/
|
|
|
|
QString level;
|
|
QString colorLevel = "pink";
|
|
|
|
//#ifndef PROJECT_TYPE_DEBUG
|
|
// if(logLevel == DEBUG)
|
|
// return;
|
|
//#endif
|
|
|
|
switch (logLevel)
|
|
{
|
|
case INFO:
|
|
level = "INFO";
|
|
colorLevel = "green";
|
|
break;
|
|
|
|
case WARNING:
|
|
level = "WARNING";
|
|
colorLevel = "orange";
|
|
break;
|
|
|
|
case ERROR:
|
|
level = "ERROR";
|
|
colorLevel = "red";
|
|
break;
|
|
|
|
case CRITICAL:
|
|
level = "CRITICAL";
|
|
colorLevel = "purple";
|
|
break;
|
|
|
|
case DEBUG:
|
|
level = "DEBUG";
|
|
colorLevel = "brown";
|
|
break;
|
|
}
|
|
|
|
QString timeStamp = QDateTime::currentDateTime().toString("hh:mm:ss");
|
|
QString message = timeStamp + " " + level + " " + msg;
|
|
QString messageHTML = QString("<p><span style=\"color: blue;\">%1</span> <span style=\"color: %2;\">%3</span> <span style=\"color: black;\">%4</span></p>").
|
|
arg(timeStamp, colorLevel, level, msg);
|
|
|
|
if (loggingType == LoggingType::WIDGET)
|
|
{
|
|
emit sigLogToWidget(messageHTML);
|
|
}
|
|
else if(loggingType == LoggingType::CONSOLE)
|
|
{
|
|
qDebug() << messageHTML;
|
|
}
|
|
|
|
if(isLogToFile)
|
|
{
|
|
QMutexLocker locker(&mutex);
|
|
if (logFile.isOpen())
|
|
{
|
|
QTextStream stream(&logFile);
|
|
stream << message << "\n";
|
|
}
|
|
}
|
|
}
|
|
|
|
void Logger::createDirectory()
|
|
{
|
|
QString directoryPath = logFolderPath;
|
|
QDir dir(directoryPath);
|
|
|
|
if(!dir.exists()) dir.mkdir(".");
|
|
|
|
}
|