13#include <QContiguousCache>
16#include <QFileInfoList>
17#include <QLoggingCategory>
18#include <QMessageLogContext>
22#include <QTemporaryFile>
25#define spawnMessageLogger(category)\
26 MessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC, category)
37 QMessageLogger mMessageLogger;
38 std::function<
const QLoggingCategory& ()> mCategory;
41 MessageLogger(
const char* pFile,
int pLine,
const char* pFunction,
const std::function<
const QLoggingCategory& ()>& pCategory);
56 LogEventHandler() =
default;
57 ~LogEventHandler()
override =
default;
65 void fireRawLog(
const QString& pMsg,
const QString& pCategoryName);
73 friend class ::test_LogHandler;
74 friend class ::test_LogModel;
84 static QString getLogFileTemplate();
86 QPointer<LogEventHandler> mEventHandler;
87 const bool mEnvPattern;
88 const int mFunctionFilenameSize;
89 qint64 mBacklogPosition;
91 QContiguousCache<LogWindowEntry> mCriticalLogWindow;
92 QStringList mCriticalLogIgnore;
93 const QString mMessagePattern;
94 const QString mDefaultMessagePattern;
95 QPointer<QTemporaryFile> mLogFile;
96 QtMessageHandler mHandler;
100 const QByteArray mFilePrefix;
101 mutable QMutex mMutex;
103 inline void copyMessageLogContext(
const QMessageLogContext& pSource,
104 QMessageLogContext& pDestination,
105 const QByteArray& pFilename = QByteArray(),
106 const QByteArray& pFunction = QByteArray(),
107 const QByteArray& pCategory = QByteArray())
const;
108 inline void logToFile(
const QString& pOutput);
109 [[nodiscard]] QByteArray formatFunction(
const char*
const pFunction,
const QByteArray& pFilename,
int pLine)
const;
110 [[nodiscard]] QByteArray formatFilename(
const char*
const pFilename)
const;
111 [[nodiscard]] QByteArray formatCategory(
const QByteArray& pCategory)
const;
113 [[nodiscard]] QString getPaddedLogMsg(
const QMessageLogContext& pContext,
const QString& pMsg)
const;
114 void handleMessage(QtMsgType pType,
const QMessageLogContext& pContext,
const QString& pMsg);
115 void handleLogWindow(QtMsgType pType,
const char* pCategory,
const QString& pMsg);
116 void removeOldLogFiles();
117 QByteArray readLogFile(qint64 pStart, qint64 pLength = -1);
118 void setLogFileInternal(
bool pEnable);
120 static void messageHandler(QtMsgType pType,
const QMessageLogContext& pContext,
const QString& pMsg);
141 bool copy(
const QString& pDest)
const;
142 [[nodiscard]]
bool copyOther(
const QString& pSource,
const QString& pDest)
const;
150 static QDateTime
getFileDate(
const QFileInfo& pInfo);
162 Q_ASSERT(pHandler.mLogFile);
164 QDebugStateSaver saver(pDbg);
165 pDbg.nospace() << pHandler.mLogFile->fileName();
Definition LogHandler.h:50
void fireLog(const QString &pMsg)
Every log will be fired by this signal. Be aware that you NEVER use a qDebug() or something like that...
void fireRawLog(const QString &pMsg, const QString &pCategoryName)
friend class LogHandler
Definition LogHandler.h:53
Definition LogHandler.h:69
static constexpr int MAX_CATEGORY_LENGTH
Definition LogHandler.h:135
void resetBacklog()
Definition LogHandler.cpp:243
static LogHandler & getInstance()
void init()
Definition LogHandler.cpp:79
void setUseHandler(bool pEnable)
Definition LogHandler.cpp:551
bool hasCriticalLog() const
Definition LogHandler.cpp:202
bool useHandler() const
Definition LogHandler.cpp:557
bool useLogFile() const
Definition LogHandler.cpp:545
qsizetype getCriticalLogCapacity() const
Definition LogHandler.cpp:208
const LogEventHandler * getEventHandler() const
Definition LogHandler.cpp:125
void setCriticalLogCapacity(int pSize)
Definition LogHandler.cpp:214
QByteArray getCriticalLogWindow()
Definition LogHandler.cpp:187
void setLogFile(bool pEnable)
Definition LogHandler.cpp:506
bool copy(const QString &pDest) const
Definition LogHandler.cpp:426
void setAutoRemove(bool pRemove)
Definition LogHandler.cpp:137
friend QDebug operator<<(QDebug, const LogHandler &)
Definition LogHandler.h:160
bool removeOtherLogFiles()
Definition LogHandler.cpp:493
friend class Env
Definition LogHandler.h:72
QByteArray getBacklog(bool pAll=false)
Definition LogHandler.cpp:180
QDateTime getCurrentLogFileDate() const
Definition LogHandler.cpp:237
static QDateTime getFileDate(const QFileInfo &pInfo)
Definition LogHandler.cpp:221
QFileInfoList getOtherLogFiles() const
Definition LogHandler.cpp:460
virtual ~LogHandler()
Definition LogHandler.cpp:55
bool copyOther(const QString &pSource, const QString &pDest) const
Definition LogHandler.cpp:439
bool isInstalled() const
Definition LogHandler.cpp:131
void reset()
Definition LogHandler.cpp:68
QDebug warning() const
Definition LogHandler.cpp:665
MessageLogger(const char *pFile, int pLine, const char *pFunction, const std::function< const QLoggingCategory &()> &pCategory)
Definition LogHandler.cpp:640
QDebug debug() const
Definition LogHandler.cpp:653
QDebug info() const
Definition LogHandler.cpp:659
QDebug critical() const
Definition LogHandler.cpp:647
Implementation of GeneralAuthenticate response APDUs.
Definition CommandApdu.h:17
QDebug operator<<(QDebug pDbg, const CommandApdu &pCommandApdu)
Definition CommandApdu.h:96