00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef QXMPPLOGGER_H
00026 #define QXMPPLOGGER_H
00027
00028 #include <QObject>
00029
00030 #ifdef QXMPP_LOGGABLE_TRACE
00031 #define qxmpp_loggable_trace(x) QString("%1(0x%2) %3").arg(metaObject()->className(), QString::number(reinterpret_cast<qint64>(this), 16), x)
00032 #else
00033 #define qxmpp_loggable_trace(x) (x)
00034 #endif
00035
00039
00040 class QXmppLogger : public QObject
00041 {
00042 Q_OBJECT
00043
00044 public:
00046 enum LoggingType
00047 {
00048 NoLogging = 0,
00049 FileLogging = 1,
00050 StdoutLogging = 2,
00051 SignalLogging = 4,
00052
00053
00055 NONE = 0,
00056 FILE = 1,
00057 STDOUT = 2
00058
00059 };
00060
00062 enum MessageType
00063 {
00064 NoMessage = 0,
00065 DebugMessage = 1,
00066 InformationMessage = 2,
00067 WarningMessage = 4,
00068 ReceivedMessage = 8,
00069 SentMessage = 16,
00070 AnyMessage = 31,
00071 };
00072 Q_DECLARE_FLAGS(MessageTypes, MessageType)
00073
00074 QXmppLogger(QObject *parent = 0);
00075 static QXmppLogger* getLogger();
00076
00077 QXmppLogger::LoggingType loggingType();
00078 void setLoggingType(QXmppLogger::LoggingType type);
00079
00080 QString logFilePath();
00081 void setLogFilePath(const QString &path);
00082
00083 QXmppLogger::MessageTypes messageTypes();
00084 void setMessageTypes(QXmppLogger::MessageTypes types);
00085
00086 public slots:
00087 void log(QXmppLogger::MessageType type, const QString& text);
00088
00089 signals:
00091 void message(QXmppLogger::MessageType type, const QString &text);
00092
00093 private:
00094 static QXmppLogger* m_logger;
00095 QXmppLogger::LoggingType m_loggingType;
00096 QString m_logFilePath;
00097 QXmppLogger::MessageTypes m_messageTypes;
00098 };
00099
00103
00104 class QXmppLoggable : public QObject
00105 {
00106 Q_OBJECT
00107
00108 public:
00109 QXmppLoggable(QObject *parent = 0);
00110
00111 protected:
00113 virtual void childEvent(QChildEvent *event);
00115
00119
00120 void debug(const QString &message)
00121 {
00122 emit logMessage(QXmppLogger::DebugMessage, qxmpp_loggable_trace(message));
00123 }
00124
00128
00129 void info(const QString &message)
00130 {
00131 emit logMessage(QXmppLogger::InformationMessage, qxmpp_loggable_trace(message));
00132 }
00133
00137
00138 void warning(const QString &message)
00139 {
00140 emit logMessage(QXmppLogger::WarningMessage, qxmpp_loggable_trace(message));
00141 }
00142
00146
00147 void logReceived(const QString &message)
00148 {
00149 emit logMessage(QXmppLogger::ReceivedMessage, qxmpp_loggable_trace(message));
00150 }
00151
00155
00156 void logSent(const QString &message)
00157 {
00158 emit logMessage(QXmppLogger::SentMessage, qxmpp_loggable_trace(message));
00159 }
00160
00161 signals:
00163 void logMessage(QXmppLogger::MessageType type, const QString &msg);
00164 };
00165
00166 Q_DECLARE_OPERATORS_FOR_FLAGS(QXmppLogger::MessageTypes)
00167 #endif // QXMPPLOGGER_H