#ifndef LOGGER_H
#define LOGGER_H
#include <QObject>
#include <QFile>
#include <QTextStream>
#include <QMutex>
#include <QQueue>
#include <QThread >
class Logger : public QObject {
Q_OBJECT
public:
static Logger* getInstance();
void startLogging();
void log(const QString& message, const QString& val, const char* file, int line);
private:
explicit Logger(QObject *parent = nullptr);
QFile logFile;
QTextStream logStream;
QMutex mutex;
QQueue<QString> logQueue;
bool logging;
void processLogQueue();
static Logger* instance;
};
class LoggerThread : public QThread {
public:
void run() override {
Logger::getInstance()->startLogging();
}
};
#define LOG(message, val) Logger::getInstance()->log(message, val, __FILE__, __LINE__)
#endif // LOGGER_H
#include "logger.h"
#include <Q