Logger added
authorJanne Kiiski <janne.kiiski@ixonos.com>
Wed, 24 Nov 2010 11:01:41 +0000 (13:01 +0200)
committerJanne Kiiski <janne.kiiski@ixonos.com>
Wed, 24 Nov 2010 13:07:39 +0000 (15:07 +0200)
src/logger.h [new file with mode: 0644]

diff --git a/src/logger.h b/src/logger.h
new file mode 100644 (file)
index 0000000..c8f924b
--- /dev/null
@@ -0,0 +1,60 @@
+#ifndef LOGGER_H
+#define LOGGER_H
+
+#include <QDebug>
+#include <QTime>
+#include <QSettings>
+#include "common.h"
+
+class Logger
+{
+public:
+    /** Logging level
+      * Exists as "LogLevel" entry in Situare.conf
+      * Valid values:
+      * QtDebugMsg -> 0
+      * QtWarningMsg -> 1
+      * QtCriticalMsg -> 2
+      * QtFatalMsg -> 3
+      * QtSystemMsg -> QtCriticalMsg -> 2
+      * @see QtMsgType
+      * Default: QtSystemMsg
+      */
+    static QtMsgType LOG_LEVEL;
+
+public:
+    Logger(QtMsgType level, const char* msg) :
+            level(level),
+            msg(msg)
+    {
+        static bool initialized = false;
+        if (!initialized) {
+            const QSettings settings(SETTINGS_ORGANIZATION_NAME, SETTINGS_APPLICATION_NAME);
+            LOG_LEVEL = static_cast<QtMsgType>(settings.value("LogLevel", (int)LOG_LEVEL).toInt());
+            initialized = true;
+        }
+        if (LOG_LEVEL <= level) {
+            time.start();
+            QDebug(QtDebugMsg) << msg << "enter";
+        }
+    }
+    ~Logger()
+    {
+        if (LOG_LEVEL <= level) {
+            QDebug(level) << msg << "exit, elapsed:" << time.elapsed() << "ms";
+        }
+    }
+
+private:
+    QTime time;
+    QtMsgType level;
+    const char* msg;
+};
+
+QtMsgType Logger::LOG_LEVEL = QtSystemMsg;
+
+/** @brief Log function time
+  */
+#define DEBUG_FUNCTION_TIME Logger function_time_logger(QtDebugMsg, __PRETTY_FUNCTION__)
+
+#endif // LOGGER_H