AusweisApp2
 Alle Klassen Namensbereiche Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Propertys Freundbeziehungen Makrodefinitionen
LogHandler.h
gehe zur Dokumentation dieser Datei
1 /*
2  * \brief Logging handler of QtMessageHandler
3  *
4  * \copyright Copyright (c) 2014-2018 Governikus GmbH & Co. KG, Germany
5  */
6 
7 #pragma once
8 
9 #include <QDateTime>
10 #include <QDebug>
11 #include <QFileInfoList>
12 #include <QMessageLogContext>
13 #include <QMutex>
14 #include <QStringList>
15 #include <QTemporaryFile>
16 
17 class test_LogHandler;
18 
19 namespace governikus
20 {
21 
23  : public QObject
24 {
25  Q_OBJECT
26  friend class ::test_LogHandler;
27 
28  private:
29  const bool mEnvPattern;
30  const int mFunctionFilenameSize;
31  qint64 mBacklogPosition;
32  const QString mMessagePattern, mDefaultMessagePattern;
33  QTemporaryFile mLogFile;
34  QtMessageHandler mHandler;
35  const QByteArray mFilePrefix;
36  QMutex mMutex;
37 
38  inline void copyMessageLogContext(const QMessageLogContext& pSource, QMessageLogContext& pDestination, const QByteArray& pFilename = QByteArray(), const QByteArray& pFunction = QByteArray(), const QByteArray& pCategory = QByteArray());
39  inline void logToFile(const QString& pOutput);
40  inline QByteArray formatFunction(const char* pFunction, const QByteArray& pFilename, int pLine) const;
41  inline QByteArray formatFilename(const char* pFilename) const;
42  inline QByteArray formatCategory(const QByteArray& pCategory) const;
43 
44  QString getPaddedLogMsg(const QMessageLogContext& pContext, const QString& pMsg);
45  void handleMessage(QtMsgType pType, const QMessageLogContext& pContext, const QString& pMsg);
46 
47  static void messageHandler(QtMsgType pType, const QMessageLogContext& pContext, const QString& pMsg);
48  friend QDebug operator<<(QDebug, const LogHandler&);
49 
50  protected:
51  LogHandler();
52  virtual ~LogHandler();
53 
54  public:
55  static LogHandler& getInstance();
56  void init();
57 
58  void setAutoRemove(bool pRemove);
59  bool copy(const QString& pDest);
60  void resetBacklog();
61  QByteArray getBacklog();
62 
63  static QDateTime getFileDate(const QFileInfo& pInfo);
64  QDateTime getCurrentLogfileDate() const;
65  QFileInfoList getOtherLogfiles() const;
66  void removeOtherLogfiles();
67 
68  Q_SIGNALS:
73  void fireLog(const QString& pMsg);
74  void fireRawLog(const QString& pMsg, const QString& pCategoryName);
75 };
76 
77 inline QDebug operator<<(QDebug pDbg, const governikus::LogHandler& pHandler)
78 {
79  QDebugStateSaver saver(pDbg);
80  pDbg.nospace() << pHandler.mLogFile.fileName();
81  return pDbg.space();
82 }
83 
84 
85 } /* namespace governikus */
void setAutoRemove(bool pRemove)
Definition: LogHandler.cpp:64
void resetBacklog()
Definition: LogHandler.cpp:122
virtual ~LogHandler()
Definition: LogHandler.cpp:37
QFileInfoList getOtherLogfiles() const
Definition: LogHandler.cpp:267
static QDateTime getFileDate(const QFileInfo &pInfo)
Definition: LogHandler.cpp:97
void fireRawLog(const QString &pMsg, const QString &pCategoryName)
static LogHandler & getInstance()
Definition: LogHandler.cpp:48
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 init()
Definition: LogHandler.cpp:54
QDateTime getCurrentLogfileDate() const
Definition: LogHandler.cpp:116
bool copy(const QString &pDest)
Definition: LogHandler.cpp:255
QDebug operator<<(QDebug pDbg, const CardInfo &pCardInfo)
Definition: CardInfo.cpp:236
friend QDebug operator<<(QDebug, const LogHandler &)
Definition: LogHandler.h:77
Definition: LogHandler.h:22
void removeOtherLogfiles()
Definition: LogHandler.cpp:280
QByteArray getBacklog()
Definition: LogHandler.cpp:80
LogHandler()
Definition: LogHandler.cpp:21