+
+ /**
+ * Takes the given message with the given log level, formats it and emits the @a messageLogged() signal.
+ *
+ * @note This method is thread-safe.
+ *
+ * @param logLevel The log leve of the message
+ * @param message The message
+ */
+ void handleMessage(LogLevel logLevel, const QString &message);
+
+signals:
+ /**
+ * Emitted whenever a message was logged.
+ *
+ * @param message The message that was logged
+ */
+ void messageLogged(const Logger::LogEntry &message);
+
+private slots:
+ void onMessageLogged(const Logger::LogEntry &message);
+
+private:
+ void handleMessage(QtMsgType type, const QString &message);
+ void outputMessage(const LogEntry &message);
+
+private:
+ LogLevel _outputLevel{LogLevel::Info};
+ QFile _logFile;
+ bool _syslogEnabled{false};
+
+ std::vector<LogEntry> _messages;
+ bool _keepMessages{true};
+ bool _initialized{false};
+};
+
+Q_DECLARE_METATYPE(Logger::LogEntry)