mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
104 lines
2.0 KiB
C++
104 lines
2.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)
|
|
{
|
|
QString level;
|
|
|
|
#ifndef PROJECT_TYPE_DEBUG
|
|
if(logLevel == DEBUG)
|
|
return;
|
|
#endif
|
|
|
|
switch (logLevel)
|
|
{
|
|
case INFO: level = "INFO"; break;
|
|
case WARNING: level = "WARNING"; break;
|
|
case ERROR: level = "ERROR"; break;
|
|
case CRITICAL: level = "CRITICAL"; break;
|
|
case DEBUG: level = "DEBUG"; break;
|
|
}
|
|
|
|
QString timeStamp = QDateTime::currentDateTime().toString("hh:mm:ss");
|
|
QString message = timeStamp + " " + level + " " + msg;
|
|
|
|
|
|
if (loggingType == LoggingType::WIDGET)
|
|
{
|
|
emit sigLogToWidget(message);
|
|
}
|
|
else if(loggingType == LoggingType::CONSOLE)
|
|
{
|
|
qDebug() << message;
|
|
}
|
|
|
|
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(".");
|
|
|
|
}
|