QXmpp Version: 1.15.1
Loading...
Searching...
No Matches
QXmppLogger.h
1// SPDX-FileCopyrightText: 2009 Manjeet Dahiya <manjeetdahiya@gmail.com>
2// SPDX-FileCopyrightText: 2010 Jeremy Lainé <jeremy.laine@m4x.org>
3//
4// SPDX-License-Identifier: LGPL-2.1-or-later
5
6#ifndef QXMPPLOGGER_H
7#define QXMPPLOGGER_H
8
9#include "QXmppGlobal.h"
10
11#include <memory>
12
13#include <QObject>
14
15#ifdef QXMPP_LOGGABLE_TRACE
16#define qxmpp_loggable_trace(x) QString("%1(0x%2) %3").arg(metaObject()->className(), QString::number(reinterpret_cast<qint64>(this), 16), x)
17#else
18#define qxmpp_loggable_trace(x) (x)
19#endif
20
21class QXmppLoggerPrivate;
22
28class QXMPP_EXPORT QXmppLogger : public QObject
29{
30 Q_OBJECT
31 Q_FLAGS(MessageType MessageTypes)
32
33
34 Q_PROPERTY(QString logFilePath READ logFilePath WRITE setLogFilePath NOTIFY logFilePathChanged)
36 Q_PROPERTY(LoggingType loggingType READ loggingType WRITE setLoggingType NOTIFY loggingTypeChanged)
38 Q_PROPERTY(MessageTypes messageTypes READ messageTypes WRITE setMessageTypes NOTIFY messageTypesChanged)
40 Q_PROPERTY(bool prettyXml READ prettyXml WRITE setPrettyXml NOTIFY prettyXmlChanged)
42 Q_PROPERTY(ColorMode colorMode READ colorMode WRITE setColorMode NOTIFY colorModeChanged)
43
44public:
47 NoLogging = 0,
48 FileLogging = 1,
49 StdoutLogging = 2,
50 SignalLogging = 4
51 };
52 Q_ENUM(LoggingType)
53
54
56 NoMessage = 0,
57 DebugMessage = 1,
58 InformationMessage = 2,
59 WarningMessage = 4,
60 ReceivedMessage = 8,
61 SentMessage = 16,
62 AnyMessage = 31
63 };
64 Q_DECLARE_FLAGS(MessageTypes, MessageType)
65
66
72 Q_ENUM(ColorMode)
73
74 QXmppLogger(QObject *parent = nullptr);
75 ~QXmppLogger() override;
76
77 static QXmppLogger *getLogger();
78
79 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
82 void setLoggingType(QXmppLogger::LoggingType type);
83 Q_SIGNAL void loggingTypeChanged();
84
85 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
91 QString logFilePath();
92 void setLogFilePath(const QString &path);
93 Q_SIGNAL void logFilePathChanged();
94
95 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
97 QXmppLogger::MessageTypes messageTypes();
98 void setMessageTypes(QXmppLogger::MessageTypes types);
99 Q_SIGNAL void messageTypesChanged();
100
101 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
103 bool prettyXml() const;
104 void setPrettyXml(bool enable);
105 Q_SIGNAL void prettyXmlChanged();
106
107 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
109 QXmppLogger::ColorMode colorMode() const;
110 void setColorMode(QXmppLogger::ColorMode mode);
111 Q_SIGNAL void colorModeChanged();
112
115 void enablePrettyXml(bool enable = true);
116
117 Q_SLOT virtual void setGauge(const QString &gauge, double value);
118 Q_SLOT virtual void updateCounter(const QString &counter, qint64 amount);
119
120 Q_SLOT void log(QXmppLogger::MessageType type, const QString &text);
121 Q_SLOT void reopen();
122
124 Q_SIGNAL void message(QXmppLogger::MessageType type, const QString &text);
125
126private:
127 static QXmppLogger *m_logger;
128 const std::unique_ptr<QXmppLoggerPrivate> d;
129};
130
136class QXMPP_EXPORT QXmppLoggable : public QObject
137{
138 Q_OBJECT
139
140public:
141 QXmppLoggable(QObject *parent = nullptr);
142
143protected:
145 void childEvent(QChildEvent *event) override;
147
149 void debug(const QString &message)
150 {
151 Q_EMIT logMessage(QXmppLogger::DebugMessage, qxmpp_loggable_trace(message));
152 }
153
155 void info(const QString &message)
156 {
157 Q_EMIT logMessage(QXmppLogger::InformationMessage, qxmpp_loggable_trace(message));
158 }
159
161 void warning(const QString &message)
162 {
163 Q_EMIT logMessage(QXmppLogger::WarningMessage, qxmpp_loggable_trace(message));
164 }
165
167 void logReceived(const QString &message)
168 {
169 Q_EMIT logMessage(QXmppLogger::ReceivedMessage, qxmpp_loggable_trace(message));
170 }
171
173 void logSent(const QString &message)
174 {
175 Q_EMIT logMessage(QXmppLogger::SentMessage, qxmpp_loggable_trace(message));
176 }
177
178public:
180 Q_SIGNAL void setGauge(const QString &gauge, double value);
181
183 Q_SIGNAL void logMessage(QXmppLogger::MessageType type, const QString &msg);
184
186 Q_SIGNAL void updateCounter(const QString &counter, qint64 amount = 1);
187};
188
189Q_DECLARE_OPERATORS_FOR_FLAGS(QXmppLogger::MessageTypes)
190#endif // QXMPPLOGGER_H
The QXmppLoggable class represents a source of logging messages.
Definition QXmppLogger.h:137
void logSent(const QString &message)
Logs a sent packet.
Definition QXmppLogger.h:173
Q_SIGNAL void logMessage(QXmppLogger::MessageType type, const QString &msg)
This signal is emitted to send logging messages.
Q_SIGNAL void updateCounter(const QString &counter, qint64 amount=1)
Updates the given counter by amount.
void info(const QString &message)
Logs an informational message.
Definition QXmppLogger.h:155
Q_SIGNAL void setGauge(const QString &gauge, double value)
Sets the given gauge to value.
void debug(const QString &message)
Logs a debugging message.
Definition QXmppLogger.h:149
void warning(const QString &message)
Logs a warning message.
Definition QXmppLogger.h:161
void logReceived(const QString &message)
Logs a received packet.
Definition QXmppLogger.h:167
The QXmppLogger class represents a sink for logging messages.
Definition QXmppLogger.h:29
ColorMode
Controls ANSI color output for pretty-printed XML.
Definition QXmppLogger.h:67
@ ColorOn
Always emit color escapes.
Definition QXmppLogger.h:69
@ ColorAuto
Emit colors when loggingType is StdoutLogging and stdout is a TTY.
Definition QXmppLogger.h:70
@ ColorOff
Never emit color escapes.
Definition QXmppLogger.h:68
Q_SIGNAL void messageTypesChanged()
QXmppLogger::LoggingType loggingType()
Returns the handler for logging messages.
Q_SIGNAL void loggingTypeChanged()
MessageType
This enum describes a type of log message.
Definition QXmppLogger.h:55
@ ReceivedMessage
Message received from server.
Definition QXmppLogger.h:60
@ InformationMessage
Informational message.
Definition QXmppLogger.h:58
@ SentMessage
Message sent to server.
Definition QXmppLogger.h:61
@ DebugMessage
Debugging message.
Definition QXmppLogger.h:57
@ WarningMessage
Warning message.
Definition QXmppLogger.h:59
QString logFilePath()
LoggingType
This enum describes how log message are handled.
Definition QXmppLogger.h:46
Q_SIGNAL void message(QXmppLogger::MessageType type, const QString &text)
This signal is emitted whenever a log message is received.
QXmppLogger::MessageTypes messageTypes()
Returns the types of messages to log.
Q_SIGNAL void logFilePathChanged()