2025-03-01 20:38:52 -05:00
|
|
|
#ifndef LOGMANAGER_H
|
|
|
|
|
#define LOGMANAGER_H
|
|
|
|
|
|
|
|
|
|
#include <QObject>
|
|
|
|
|
#include <QString>
|
2026-01-11 12:11:16 -05:00
|
|
|
#include <QStringList>
|
|
|
|
|
#include <QFile>
|
2026-01-08 00:38:25 -05:00
|
|
|
#include <functional>
|
2025-03-01 20:38:52 -05:00
|
|
|
|
|
|
|
|
class LogManager : public QObject
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
static LogManager &instance() {
|
|
|
|
|
static LogManager instance;
|
|
|
|
|
return instance;
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-08 00:38:25 -05:00
|
|
|
// Standard logging
|
2025-03-01 20:38:52 -05:00
|
|
|
void addEntry(const QString &entry);
|
|
|
|
|
void addError(const QString &error);
|
|
|
|
|
void addLine();
|
|
|
|
|
|
2026-01-08 00:38:25 -05:00
|
|
|
// Debug logging - only logs if debug mode enabled
|
|
|
|
|
void debug(const QString &entry);
|
|
|
|
|
|
|
|
|
|
// Set debug mode checker (called from Settings initialization)
|
|
|
|
|
void setDebugChecker(std::function<bool()> checker);
|
|
|
|
|
|
2026-01-11 12:11:16 -05:00
|
|
|
// Set log-to-file checker (called from Settings initialization)
|
|
|
|
|
void setLogToFileChecker(std::function<bool()> checker);
|
|
|
|
|
|
|
|
|
|
// Call this after connecting to entryAdded signal to replay buffered entries
|
|
|
|
|
void flushBufferedEntries();
|
|
|
|
|
|
2025-03-01 20:38:52 -05:00
|
|
|
signals:
|
|
|
|
|
void entryAdded(const QString &entry);
|
|
|
|
|
|
|
|
|
|
private:
|
2026-01-11 12:11:16 -05:00
|
|
|
LogManager() : m_debugChecker(nullptr), m_logToFileChecker(nullptr), m_logFile(nullptr), m_hasListeners(false) {}
|
|
|
|
|
~LogManager();
|
|
|
|
|
|
|
|
|
|
void writeToFile(const QString &entry);
|
|
|
|
|
void emitOrBuffer(const QString &entry);
|
2025-03-01 20:38:52 -05:00
|
|
|
|
2026-01-08 00:38:25 -05:00
|
|
|
std::function<bool()> m_debugChecker;
|
2026-01-11 12:11:16 -05:00
|
|
|
std::function<bool()> m_logToFileChecker;
|
|
|
|
|
QFile *m_logFile;
|
|
|
|
|
QStringList m_bufferedEntries;
|
|
|
|
|
bool m_hasListeners;
|
2026-01-08 00:38:25 -05:00
|
|
|
|
2025-03-01 20:38:52 -05:00
|
|
|
Q_DISABLE_COPY(LogManager)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // LOGMANAGER_H
|