diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-02-08 12:51:15 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-02-08 12:51:15 +0000 |
| commit | deb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4 (patch) | |
| tree | d956bad28e28aadc3c83dbf88b3eddb5e1d9a9f4 /src/base/QXmppLogger.h | |
| parent | e8a1ad0cc608f12874ba4bafbd8282fa537ec9fb (diff) | |
| download | qxmpp-deb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4.tar.gz | |
move files common to client/server into "base"
Diffstat (limited to 'src/base/QXmppLogger.h')
| -rw-r--r-- | src/base/QXmppLogger.h | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/src/base/QXmppLogger.h b/src/base/QXmppLogger.h new file mode 100644 index 00000000..93de33f7 --- /dev/null +++ b/src/base/QXmppLogger.h @@ -0,0 +1,169 @@ +/* + * Copyright (C) 2008-2011 The QXmpp developers + * + * Author: + * Manjeet Dahiya + * Jeremy Lainé + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + + +#ifndef QXMPPLOGGER_H +#define QXMPPLOGGER_H + +#include <QObject> + +#ifdef QXMPP_LOGGABLE_TRACE +#define qxmpp_loggable_trace(x) QString("%1(0x%2) %3").arg(metaObject()->className(), QString::number(reinterpret_cast<qint64>(this), 16), x) +#else +#define qxmpp_loggable_trace(x) (x) +#endif + +class QXmppLoggerPrivate; + +/// \brief The QXmppLogger class represents a sink for logging messages. +/// +/// \ingroup Core + +class QXmppLogger : public QObject +{ + Q_OBJECT + Q_ENUMS(LoggingType) + Q_FLAGS(MessageType MessageTypes) + Q_PROPERTY(QString logFilePath READ logFilePath WRITE setLogFilePath) + Q_PROPERTY(LoggingType loggingType READ loggingType WRITE setLoggingType) + Q_PROPERTY(MessageTypes messageTypes READ messageTypes WRITE setMessageTypes) + +public: + /// This enum describes how log message are handled. + enum LoggingType + { + NoLogging = 0, ///< Log messages are discarded + FileLogging = 1, ///< Log messages are written to a file + StdoutLogging = 2, ///< Log messages are written to the standard output + SignalLogging = 4, ///< Log messages are emitted as a signal + }; + + /// This enum describes a type of log message. + enum MessageType + { + NoMessage = 0, ///< No message type + DebugMessage = 1, ///< Debugging message + InformationMessage = 2, ///< Informational message + WarningMessage = 4, ///< Warning message + ReceivedMessage = 8, ///< Message received from server + SentMessage = 16, ///< Message sent to server + AnyMessage = 31, ///< Any message type + }; + Q_DECLARE_FLAGS(MessageTypes, MessageType) + + QXmppLogger(QObject *parent = 0); + ~QXmppLogger(); + + static QXmppLogger* getLogger(); + + QXmppLogger::LoggingType loggingType(); + void setLoggingType(QXmppLogger::LoggingType type); + + QString logFilePath(); + void setLogFilePath(const QString &path); + + QXmppLogger::MessageTypes messageTypes(); + void setMessageTypes(QXmppLogger::MessageTypes types); + +public slots: + void log(QXmppLogger::MessageType type, const QString& text); + void reopen(); + +signals: + /// This signal is emitted whenever a log message is received. + void message(QXmppLogger::MessageType type, const QString &text); + +private: + static QXmppLogger* m_logger; + QXmppLoggerPrivate *d; +}; + +/// \brief The QXmppLoggable class represents a source of logging messages. +/// +/// \ingroup Core + +class QXmppLoggable : public QObject +{ + Q_OBJECT + +public: + QXmppLoggable(QObject *parent = 0); + +protected: + /// \cond + virtual void childEvent(QChildEvent *event); + /// \endcond + + /// Logs a debugging message. + /// + /// \param message + + void debug(const QString &message) + { + emit logMessage(QXmppLogger::DebugMessage, qxmpp_loggable_trace(message)); + } + + /// Logs an informational message. + /// + /// \param message + + void info(const QString &message) + { + emit logMessage(QXmppLogger::InformationMessage, qxmpp_loggable_trace(message)); + } + + /// Logs a warning message. + /// + /// \param message + + void warning(const QString &message) + { + emit logMessage(QXmppLogger::WarningMessage, qxmpp_loggable_trace(message)); + } + + /// Logs a received packet. + /// + /// \param message + + void logReceived(const QString &message) + { + emit logMessage(QXmppLogger::ReceivedMessage, qxmpp_loggable_trace(message)); + } + + /// Logs a sent packet. + /// + /// \param message + + void logSent(const QString &message) + { + emit logMessage(QXmppLogger::SentMessage, qxmpp_loggable_trace(message)); + } + +signals: + /// This signal is emitted to send logging messages. + void logMessage(QXmppLogger::MessageType type, const QString &msg); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QXmppLogger::MessageTypes) +#endif // QXMPPLOGGER_H |
