diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-27 13:16:55 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-27 13:16:55 +0000 |
| commit | 1284e4f4efa9a810445e6cf34fa15d325f26a79e (patch) | |
| tree | f827ae9eb5bdf4b2104daa95ca0b50e47b5fa97b /src | |
| parent | ce3fc8a796f9ba14dac0c77e6d3c102c8552b172 (diff) | |
| download | qxmpp-1284e4f4efa9a810445e6cf34fa15d325f26a79e.tar.gz | |
Improve QXmppLogger:
* make file and stdout logging formats consistent
* make it possible to select which message types to log
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppLogger.cpp | 45 | ||||
| -rw-r--r-- | src/QXmppLogger.h | 18 |
2 files changed, 48 insertions, 15 deletions
diff --git a/src/QXmppLogger.cpp b/src/QXmppLogger.cpp index 107e5c26..05a028a8 100644 --- a/src/QXmppLogger.cpp +++ b/src/QXmppLogger.cpp @@ -24,9 +24,9 @@ #include <iostream> +#include <QDateTime> #include <QTextStream> #include <QFile> -#include <QTime> #include "QXmppLogger.h" @@ -51,13 +51,22 @@ static const char *typeName(QXmppLogger::MessageType type) } } +static QString formatted(QXmppLogger::MessageType type, const QString& text) +{ + return QDateTime::currentDateTime().toString() + " " + + QString::fromLatin1(typeName(type)) + " " + + text; +} + /// Constructs a new QXmppLogger. /// /// \param parent QXmppLogger::QXmppLogger(QObject *parent) - : QObject(parent), m_loggingType(QXmppLogger::NoLogging), - m_logFilePath("QXmppClientLog.log") + : QObject(parent), + m_loggingType(QXmppLogger::NoLogging), + m_logFilePath("QXmppClientLog.log"), + m_messageTypes(QXmppLogger::AnyMessage) { } @@ -67,10 +76,7 @@ QXmppLogger::QXmppLogger(QObject *parent) QXmppLogger* QXmppLogger::getLogger() { if(!m_logger) - { m_logger = new QXmppLogger(); - m_logger->setLoggingType(FileLogging); - } return m_logger; } @@ -92,6 +98,23 @@ void QXmppLogger::setLoggingType(QXmppLogger::LoggingType type) m_loggingType = type; } +/// Returns the types of messages to log. +/// + +QXmppLogger::MessageTypes QXmppLogger::messageTypes() +{ + return m_messageTypes; +} + +/// Sets the types of messages to log. +/// +/// \param types + +void QXmppLogger::setMessageTypes(QXmppLogger::MessageTypes types) +{ + m_messageTypes = types; +} + /// Add a logging message. /// /// \param type @@ -99,6 +122,10 @@ void QXmppLogger::setLoggingType(QXmppLogger::LoggingType type) void QXmppLogger::log(QXmppLogger::MessageType type, const QString& text) { + // filter messages + if (!m_messageTypes.testFlag(type)) + return; + switch(m_loggingType) { case QXmppLogger::FileLogging: @@ -106,13 +133,11 @@ void QXmppLogger::log(QXmppLogger::MessageType type, const QString& text) QFile file(m_logFilePath); file.open(QIODevice::Append); QTextStream stream(&file); - stream << QTime::currentTime().toString("hh:mm:ss.zzz") << - " " << typeName(type) << " " << - text << "\n\n"; + stream << formatted(type, text) << "\n\n"; } break; case QXmppLogger::StdoutLogging: - std::cout << typeName(type) << " " << qPrintable(text) << std::endl; + std::cout << qPrintable(formatted(type, text)) << std::endl; break; case QXmppLogger::SignalLogging: emit message(type, text); diff --git a/src/QXmppLogger.h b/src/QXmppLogger.h index 36275162..17adccdd 100644 --- a/src/QXmppLogger.h +++ b/src/QXmppLogger.h @@ -55,12 +55,15 @@ public: /// This enum describes a type of log message. enum MessageType { - DebugMessage = 0, ///< Debugging message - InformationMessage, ///< Informational message - WarningMessage, ///< Warning message - ReceivedMessage, ///< Message received from server - SentMessage, ///< Message sent to server + 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); static QXmppLogger* getLogger(); @@ -71,6 +74,9 @@ public: 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); @@ -82,6 +88,8 @@ private: static QXmppLogger* m_logger; QXmppLogger::LoggingType m_loggingType; QString m_logFilePath; + QXmppLogger::MessageTypes m_messageTypes; }; +Q_DECLARE_OPERATORS_FOR_FLAGS(QXmppLogger::MessageTypes) #endif // QXMPPLOGGER_H |
