XPlor/libs/core/logmanager.h

57 lines
1.4 KiB
C
Raw Normal View History

2025-03-01 20:38:52 -05:00
#ifndef LOGMANAGER_H
#define LOGMANAGER_H
#include <QObject>
#include <QString>
#include <QStringList>
#include <QFile>
#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;
}
// Standard logging
2025-03-01 20:38:52 -05:00
void addEntry(const QString &entry);
void addError(const QString &error);
void addLine();
// 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);
// 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:
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
std::function<bool()> m_debugChecker;
std::function<bool()> m_logToFileChecker;
QFile *m_logFile;
QStringList m_bufferedEntries;
bool m_hasListeners;
2025-03-01 20:38:52 -05:00
Q_DISABLE_COPY(LogManager)
};
#endif // LOGMANAGER_H