mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
refact1
This commit is contained in:
138
LibServer/Systems/logger.cpp
Normal file
138
LibServer/Systems/logger.cpp
Normal file
@@ -0,0 +1,138 @@
|
||||
#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 = "yellow";
|
||||
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(".");
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user