mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
feat: add logger with write to file
This commit is contained in:
@@ -2,10 +2,16 @@
|
||||
|
||||
#include <QThread>
|
||||
|
||||
|
||||
Logger::Logger()
|
||||
{
|
||||
//this->listWidget = widget;
|
||||
connect(this,&Logger::sigAddToLogger, this, &Logger::handleLog,Qt::QueuedConnection);
|
||||
createDirectory();
|
||||
}
|
||||
|
||||
Logger &Logger::instance()
|
||||
{
|
||||
static Logger logger;
|
||||
return logger;
|
||||
}
|
||||
|
||||
Logger::~Logger()
|
||||
@@ -13,22 +19,79 @@ Logger::~Logger()
|
||||
|
||||
}
|
||||
|
||||
void Logger::setTypeLog(QString type)
|
||||
void Logger::setLoggingType(LoggingType type)
|
||||
{
|
||||
typeLogger = type;
|
||||
this->loggingType = type;
|
||||
}
|
||||
|
||||
void Logger::addTextToLogger(QString msg)
|
||||
void Logger::log(QString message, LogLevel level)
|
||||
{
|
||||
if(typeLogger == "widget")
|
||||
emit sigAddToLogger(message,level);
|
||||
}
|
||||
|
||||
void Logger::setLogFile(QString filePath)
|
||||
{
|
||||
QMutexLocker locker(&mutex);
|
||||
if (logFile.isOpen())
|
||||
{
|
||||
emit sigSendTextToLogger(msg);
|
||||
logFile.close();
|
||||
}
|
||||
else if (typeLogger == "console")
|
||||
|
||||
logFile.setFileName(filePath);
|
||||
logFile.open(QIODevice::WriteOnly | QIODevice::Append);
|
||||
}
|
||||
|
||||
void Logger::setLogToFile(bool flag)
|
||||
{
|
||||
isLogToFile = flag;
|
||||
if (flag)
|
||||
{
|
||||
//qDebug() << msg;
|
||||
}else
|
||||
{
|
||||
emit sigSendTextToLogger(msg);
|
||||
QString filePath = logFolderPath + "/" + "log " + QDateTime::currentDateTime().toString("dd-MM-yyyy")+".txt";
|
||||
setLogFile(filePath);
|
||||
}
|
||||
}
|
||||
|
||||
void Logger::handleLog(QString msg, LogLevel logLevel)
|
||||
{
|
||||
QString level;
|
||||
|
||||
switch (logLevel)
|
||||
{
|
||||
case INFO: level = "INFO"; break;
|
||||
case WARNING: level = "WARNING"; break;
|
||||
case ERROR: level = "ERROR"; break;
|
||||
case CRITICAL: level = "CRITICAL"; 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(".");
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user