From 0be0e822e49ec89e29cac29ea67fe8e6e26cc08f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Mon, 12 Jan 2015 22:18:26 +0100 Subject: GH-720 Add timestamps (since mmc start) to log --- logger/QsLog.cpp | 31 ++++++++++++++++++++++++------- logger/QsLog.h | 6 ++++++ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/logger/QsLog.cpp b/logger/QsLog.cpp index 87d7a412..68493963 100644 --- a/logger/QsLog.cpp +++ b/logger/QsLog.cpp @@ -37,11 +37,7 @@ namespace QsLogging { typedef QList DestinationList; -static const char *LevelStrings[] = {"TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" - "UNKNOWN"}; - -// not using Qt::ISODate because we need the milliseconds too -static const QString fmtDateTime("hhhh:mm:ss.zzz"); +static const char *LevelStrings[] = {"TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "UNKNOWN"}; static const char *LevelToText(Level theLevel) { @@ -62,10 +58,12 @@ public: QMutex logMutex; Level level; DestinationList destList; + QDateTime startTime; }; Logger::Logger() : d(new LoggerImpl) { + d->startTime = QDateTime::currentDateTime(); } Logger::~Logger() @@ -89,13 +87,32 @@ Level Logger::loggingLevel() const return d->level; } +QDateTime Logger::timeOfStart() const +{ + return d->startTime; +} + +qint64 Logger::timeSinceStart() const +{ + return d->startTime.msecsTo(QDateTime::currentDateTime()); +} + + //! creates the complete log message and passes it to the logger void Logger::Helper::writeToLog() { const char *const levelName = LevelToText(level); - const QString completeMessage(QString("%1\t%2").arg(levelName, 5).arg(buffer)); - Logger &logger = Logger::instance(); + qint64 msecstotal = logger.timeSinceStart(); + qint64 seconds = msecstotal / 1000; + qint64 msecs = msecstotal % 1000; + QString foo; + char buf[1024]; + + ::snprintf(buf, 1024, "%5lld.%03lld", seconds, msecs); + + const QString completeMessage(QString("%1\t%2\t%3").arg(buf).arg(levelName, 5).arg(buffer)); + QMutexLocker lock(&logger.d->logMutex); logger.write(completeMessage); } diff --git a/logger/QsLog.h b/logger/QsLog.h index 6c96423c..2b7984e6 100644 --- a/logger/QsLog.h +++ b/logger/QsLog.h @@ -27,6 +27,7 @@ #include #include +#include namespace QsLogging { @@ -60,6 +61,11 @@ public: void setLoggingLevel(Level newLevel); //! The default level is INFO Level loggingLevel() const; + //! msecs since the logger was initialized + qint64 timeSinceStart() const; + //! time when the logger was initialized + QDateTime timeOfStart() const; + //! The helper forwards the streaming to QDebug and builds the final //! log message. -- cgit v1.2.3