logger: Refactor the logging framework
[quassel.git] / src / common / quassel.h
index 952f8fa..85660af 100644 (file)
@@ -35,6 +35,8 @@
 
 class QFile;
 
 
 class QFile;
 
+class Logger;
+
 class Quassel : public QObject
 {
     // TODO Qt5: Use Q_GADGET
 class Quassel : public QObject
 {
     // TODO Qt5: Use Q_GADGET
@@ -146,6 +148,13 @@ public:
 
     static Quassel *instance();
 
 
     static Quassel *instance();
 
+    /**
+     * Provides access to the Logger instance.
+     *
+     * @returns The Logger instance
+     */
+    Logger *logger() const;
+
     static void setupBuildInfo();
     static const BuildInfo &buildInfo();
     static RunMode runMode();
     static void setupBuildInfo();
     static const BuildInfo &buildInfo();
     static RunMode runMode();
@@ -182,20 +191,6 @@ public:
     static QString optionValue(const QString &option);
     static bool isOptionSet(const QString &option);
 
     static QString optionValue(const QString &option);
     static bool isOptionSet(const QString &option);
 
-    enum LogLevel {
-        DebugLevel,
-        InfoLevel,
-        WarningLevel,
-        ErrorLevel
-    };
-
-    static LogLevel logLevel();
-    static void setLogLevel(LogLevel logLevel);
-    static QFile *logFile();
-    static bool logToSyslog();
-
-    static void logFatalMessage(const char *msg);
-
     using ReloadHandler = std::function<bool()>;
 
     static void registerReloadHandler(ReloadHandler handler);
     using ReloadHandler = std::function<bool()>;
 
     static void registerReloadHandler(ReloadHandler handler);
@@ -204,6 +199,11 @@ public:
 
     static void registerQuitHandler(QuitHandler quitHandler);
 
 
     static void registerQuitHandler(QuitHandler quitHandler);
 
+    const QString &coreDumpFileName();
+
+signals:
+    void messageLogged(const QDateTime &timeStamp, const QString &msg);
+
 protected:
     static bool init();
     static void destroy();
 protected:
     static bool init();
     static void destroy();
@@ -223,8 +223,6 @@ private:
     void setupEnvironment();
     void registerMetaTypes();
 
     void setupEnvironment();
     void registerMetaTypes();
 
-    const QString &coreDumpFileName();
-
     /**
      * Requests a reload of relevant runtime configuration.
      *
     /**
      * Requests a reload of relevant runtime configuration.
      *
@@ -257,12 +255,10 @@ private:
     QStringList _dataDirPaths;
     QString _translationDirPath;
 
     QStringList _dataDirPaths;
     QString _translationDirPath;
 
-    LogLevel _logLevel{InfoLevel};
-    bool _logToSyslog{false};
-    std::unique_ptr<QFile> _logFile;
-
     std::shared_ptr<AbstractCliParser> _cliParser;
 
     std::shared_ptr<AbstractCliParser> _cliParser;
 
+    Logger *_logger;
+
     std::vector<ReloadHandler> _reloadHandlers;
     std::vector<QuitHandler> _quitHandlers;
 };
     std::vector<ReloadHandler> _reloadHandlers;
     std::vector<QuitHandler> _quitHandlers;
 };