Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
logger.h
Go to the documentation of this file.
1
6
7#ifndef LOGGER_H
8#define LOGGER_H
9
10#include <QFile>
11#include <QList>
12#include <QMutex>
13#include <QObject>
14#include <QString>
15#include <QTextStream>
16#include <qlogging.h>
17#include <qprocessordetection.h>
18#include <qtmetamacros.h>
19#include <string>
20
21#if defined(Q_PROCESSOR_X86_32)
22#define BUILD_ARCHITECTURE "32-bit"
23#elif defined(Q_PROCESSOR_X86_64)
24#define BUILD_ARCHITECTURE "64-bit"
25#elif defined(Q_PROCESSOR_ARM)
26#define BUILD_ARCHITECTURE "ARM"
27#else
28#define BUILD_ARCHITECTURE "unknown"
29#endif
30
31class Logger : public QObject
32{
33 Q_OBJECT
34public:
36 {
37 static Logger instance;
38 return instance;
39 }
40
41 void logToFile(bool enabled);
42 void log(QtMsgType type, const QMessageLogContext &ctx, const QString &message);
43 QString getClientVersion();
45 QString getSystemArchitecture();
46 QString getSystemLocale();
47 QString getClientInstallInfo();
49 {
50 return logBuffer;
51 }
52 void setPersistentLogPath(const QString &path);
53 QList<QString> getPreviousSessionTail(int maxLines = 60) const;
54 static QList<QString> extractPreviousSessionTail(const QString &filePath, int maxLines = 60);
55
56private:
57 Logger();
58 ~Logger() override;
59 // Singleton - Don't implement copy constructor and assign operator
60 Logger(Logger const &);
61 void operator=(Logger const &);
62
64 QTextStream fileStream;
67 mutable QMutex mutex;
72
73protected:
74 void openLogfileSession();
76 void openPersistentLog(const QString &path);
77 void prunePersistentLog(const QString &path);
79
80protected slots:
81 void internalLog(const QString &message);
82
83signals:
84 void logEntryAdded(const QString &message);
85};
86
87#endif
Definition logger.h:32
QString persistentLogPath
Definition logger.h:68
QFile fileHandle
Definition logger.h:65
Logger(Logger const &)
void internalLog(const QString &message)
Definition logger.cpp:227
void setPersistentLogPath(const QString &path)
Definition logger.cpp:91
QTextStream persistentFileStream
Definition logger.h:70
void openPersistentLog(const QString &path)
Definition logger.cpp:133
QList< QString > getPreviousSessionTail(int maxLines=60) const
Definition logger.cpp:163
void prunePersistentLog(const QString &path)
Definition logger.cpp:103
QString getClientInstallInfo()
Definition logger.cpp:275
QString getClientVersion()
Definition logger.cpp:56
QString getClientOperatingSystem()
Definition logger.cpp:264
QFile persistentFileHandle
Definition logger.h:71
static Logger & getInstance()
Definition logger.h:35
bool logToFileEnabled
Definition logger.h:63
QString getSystemArchitecture()
Definition logger.cpp:249
bool persistentLogEnabled
Definition logger.h:69
QMutex mutex
Definition logger.h:67
void logToFile(bool enabled)
Definition logger.cpp:47
void operator=(Logger const &)
QList< QString > logBuffer
Definition logger.h:66
void logEntryAdded(const QString &message)
Logger()
Definition logger.cpp:27
void openLogfileSession()
Definition logger.cpp:61
QTextStream fileStream
Definition logger.h:64
void log(QtMsgType type, const QMessageLogContext &ctx, const QString &message)
Definition logger.cpp:222
QList< QString > getLogBuffer()
Definition logger.h:48
QString getSystemLocale()
Definition logger.cpp:269
void closePersistentLogSession()
Definition logger.cpp:151
void closeLogfileSession()
Definition logger.cpp:80
static QList< QString > extractPreviousSessionTail(const QString &filePath, int maxLines=60)
Definition logger.cpp:176
Definition remote_connection_controller.h:20
EmailType type
Definition smtpclient.cpp:30