X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Flogger.h;h=6c5c1d0362f539e222483f41bdc6a226974d83b0;hp=8c1f2f003788d1ef7fe71bddaada8fa0c36538b4;hb=097f625c4bd147f4127573ad8ab48555f9dc62d3;hpb=37110ceaa070167b4f40ed449ac9ea130503a792 diff --git a/src/common/logger.h b/src/common/logger.h index 8c1f2f00..6c5c1d03 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-2020 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,11 +83,7 @@ public: */ std::vector 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 QString& message); signals: /** @@ -94,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}; @@ -111,6 +118,7 @@ private: std::vector _messages; bool _keepMessages{true}; bool _initialized{false}; + QByteArray _prgname; }; Q_DECLARE_METATYPE(Logger::LogEntry)