X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Flogger.h;h=f55590c1c696efc1538f5846f5f1440050ac1693;hp=7752a74add9e9a05068a0e22042d187b3bd24d3f;hb=01d67be28f1eb983a1bd0b97f13160ffb6b39307;hpb=ab7ef4d24f62b5848b628482b7762ebfc0b53e1a diff --git a/src/common/logger.h b/src/common/logger.h index 7752a74a..f55590c1 100644 --- a/src/common/logger.h +++ b/src/common/logger.h @@ -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 #include @@ -31,15 +33,16 @@ /** * 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(QObject* parent = 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,7 +83,7 @@ public: */ std::vector messages() const; - static void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &message); + 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. @@ -82,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 QString& message); signals: /** @@ -90,14 +101,14 @@ signals: * * @param message The message that was logged */ - void messageLogged(const Logger::LogEntry &message); + void messageLogged(const Logger::LogEntry& message); private slots: - void onMessageLogged(const Logger::LogEntry &message); + void onMessageLogged(const Logger::LogEntry& message); private: - void handleMessage(QtMsgType type, const QString &message); - void outputMessage(const LogEntry &message); + void handleMessage(QtMsgType type, const QString& message); + void outputMessage(const LogEntry& message); private: LogLevel _outputLevel{LogLevel::Info}; @@ -107,6 +118,7 @@ private: std::vector _messages; bool _keepMessages{true}; bool _initialized{false}; + QByteArray _prgname; }; Q_DECLARE_METATYPE(Logger::LogEntry)