AusweisApp
Lade ...
Suche ...
Keine Treffer
LogHandler.h
gehe zur Dokumentation dieser Datei
1
5/*
6 * \brief Logging handler of QtMessageHandler
7 */
8
9#pragma once
10
11#include "Env.h"
12
13#include <QContiguousCache>
14#include <QDateTime>
15#include <QDebug>
16#include <QFileInfoList>
17#include <QLoggingCategory>
18#include <QMessageLogContext>
19#include <QMutex>
20#include <QPointer>
21#include <QStringList>
22#include <QTemporaryFile>
23#include <functional>
24
25#define spawnMessageLogger(category)\
26 MessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC, category)
27
28class test_LogHandler;
29class test_LogModel;
30
31namespace governikus
32{
33
35{
36 private:
37 QMessageLogger mMessageLogger;
38 std::function<const QLoggingCategory& ()> mCategory;
39
40 public:
41 MessageLogger(const char* pFile, int pLine, const char* pFunction, const std::function<const QLoggingCategory& ()>& pCategory);
42 QDebug critical() const;
43 QDebug debug() const;
44 QDebug info() const;
45 QDebug warning() const;
46};
47
49 : public QObject
50{
52
53 friend class LogHandler;
54
55 private:
56 LogEventHandler() = default;
57 ~LogEventHandler() override = default;
58
64 void fireLog(const QString& pMsg);
65 void fireRawLog(const QString& pMsg, const QString& pCategoryName);
66};
67
69{
71
72 friend class Env;
73 friend class ::test_LogHandler;
74 friend class ::test_LogModel;
75 friend QDebug operator<<(QDebug, const LogHandler&);
76
77 private:
78 struct LogWindowEntry
79 {
80 qint64 mPosition;
81 qint64 mLength;
82 };
83
84 static QString getLogFileTemplate();
85
86 QPointer<LogEventHandler> mEventHandler;
87 const bool mEnvPattern;
88 const int mFunctionFilenameSize;
89 qint64 mBacklogPosition;
90 bool mCriticalLog;
91 QContiguousCache<LogWindowEntry> mCriticalLogWindow;
92 QStringList mCriticalLogIgnore;
93 const QString mMessagePattern;
94 const QString mDefaultMessagePattern;
96 QtMessageHandler mHandler;
97 bool mUseHandler;
98 bool mAutoRemove;
99 bool mUseLogFile;
100 const QByteArray mFilePrefix;
101 mutable QMutex mMutex;
102
103 inline void copyMessageLogContext(const QMessageLogContext& pSource,
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;
112
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);
119
120 static void messageHandler(QtMsgType pType, const QMessageLogContext& pContext, const QString& pMsg);
121
122 protected:
124 virtual ~LogHandler();
126
127#ifndef QT_NO_DEBUG
128
129 public:
130#endif
131 void reset();
132 [[nodiscard]] bool isInstalled() const;
133
134 public:
135 static constexpr int MAX_CATEGORY_LENGTH = 13;
136
137 void init();
138 [[nodiscard]] const LogEventHandler* getEventHandler() const;
139
140 void setAutoRemove(bool pRemove);
141 bool copy(const QString& pDest) const;
142 [[nodiscard]] bool copyOther(const QString& pSource, const QString& pDest) const;
143 void resetBacklog();
144 QByteArray getBacklog(bool pAll = false);
146 [[nodiscard]] bool hasCriticalLog() const;
149
150 static QDateTime getFileDate(const QFileInfo& pInfo);
153 bool removeOtherLogFiles();
154 void setLogFile(bool pEnable);
155 [[nodiscard]] bool useLogFile() const;
156 void setUseHandler(bool pEnable);
157 [[nodiscard]] bool useHandler() const;
158};
159
161{
162 Q_ASSERT(pHandler.mLogFile);
163
165 pDbg.nospace() << pHandler.mLogFile->fileName();
166 return pDbg.space();
167}
168
169
170} // namespace governikus
Definition Env.h:42
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)
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
friend QDebug operator<<(QDebug, const LogHandler &)
Definition LogHandler.h:160
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
bool removeOtherLogFiles()
Definition LogHandler.cpp:493
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
Definition LogHandler.h:35
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
QSharedPointer< T > decodeObject(const QByteArray &pData, bool pLogging=true)
Template function for decoding an OpenSSL type from DER encoded QByteArray.
Definition ASN1TemplateUtil.h:114
QDebug operator<<(QDebug pDbg, const CommandApdu &pCommandApdu)
Definition CommandApdu.h:96