logger: export LogEntry symbols
[quassel.git] / src / common / logger.h
index 8c1f2f0..f55590c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2018 by the Quassel Project                        *
+ *   Copyright (C) 2005-2019 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -20,6 +20,8 @@
 
 #pragma once
 
+#include "common-export.h"
+
 #include <vector>
 
 #include <QDateTime>
 /**
  * The Logger class encapsulates the various configured logging backends.
  */
-class Logger : public QObject
+class COMMON_EXPORT Logger : public QObject
 {
     Q_OBJECT
 
 public:
-    Logger(QObject *parent = nullptr);
+    Logger(QObjectparent = nullptr);
     ~Logger() override;
 
-    enum class LogLevel {
+    enum class LogLevel
+    {
         Debug,
         Info,
         Warning,
@@ -47,10 +50,18 @@ public:
         Fatal
     };
 
-    struct LogEntry {
+    struct COMMON_EXPORT LogEntry
+    {
         QDateTime timeStamp;
         LogLevel logLevel;
         QString message;
+
+        /**
+         * Gets this log entry in a printable format, with timestamp and log level
+         *
+         * @return the log entry, formatted with timestamp and log level
+         */
+        QString toString() const;
     };
 
     /**
@@ -61,9 +72,9 @@ public:
      * and won't store further ones.
      *
      * @param keepMessages Whether messages should be kept
-     * @returns true, if initialization was successful
+     * @throws ExitException, if command line options are invalid
      */
-    bool setup(bool keepMessages);
+    void setup(bool keepMessages);
 
     /**
      * Accesses the stores log messages, e.g. for consumption by DebugLogWidget.
@@ -72,11 +83,7 @@ public:
      */
     std::vector<Logger::LogEntry> messages() const;
 
-#if QT_VERSION < 0x050000
-    static void messageHandler(QtMsgType type, const char *message);
-#else
-    static void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &message);
-#endif
+    static void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message);
 
     /**
      * Takes the given message with the given log level, formats it and emits the @a messageLogged() signal.
@@ -86,7 +93,7 @@ public:
      * @param logLevel The log leve of the message
      * @param message  The message
      */
-    void handleMessage(LogLevel logLevel, const QString &message);
+    void handleMessage(LogLevel logLevel, const QStringmessage);
 
 signals:
     /**
@@ -94,14 +101,14 @@ signals:
      *
      * @param message The message that was logged
      */
-    void messageLogged(const Logger::LogEntry &message);
+    void messageLogged(const Logger::LogEntrymessage);
 
 private slots:
-    void onMessageLogged(const Logger::LogEntry &message);
+    void onMessageLogged(const Logger::LogEntrymessage);
 
 private:
-    void handleMessage(QtMsgType type, const QString &message);
-    void outputMessage(const LogEntry &message);
+    void handleMessage(QtMsgType type, const QStringmessage);
+    void outputMessage(const LogEntrymessage);
 
 private:
     LogLevel _outputLevel{LogLevel::Info};
@@ -111,6 +118,7 @@ private:
     std::vector<LogEntry> _messages;
     bool _keepMessages{true};
     bool _initialized{false};
+    QByteArray _prgname;
 };
 
 Q_DECLARE_METATYPE(Logger::LogEntry)