aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppLogger.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-27 13:16:55 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-27 13:16:55 +0000
commit1284e4f4efa9a810445e6cf34fa15d325f26a79e (patch)
treef827ae9eb5bdf4b2104daa95ca0b50e47b5fa97b /src/QXmppLogger.cpp
parentce3fc8a796f9ba14dac0c77e6d3c102c8552b172 (diff)
downloadqxmpp-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/QXmppLogger.cpp')
-rw-r--r--src/QXmppLogger.cpp45
1 files changed, 35 insertions, 10 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);