diff --git a/src/core/filelogger.cpp b/src/core/filelogger.cpp index 279d25a7..7dcada9e 100644 --- a/src/core/filelogger.cpp +++ b/src/core/filelogger.cpp @@ -55,6 +55,6 @@ void FileLogger::init() { } void FileLogger::onMessage(const LogMessage& msg) { - LogManager::formatMessage(this->fileStream, msg, false); + LogManager::formatMessage(this->fileStream, msg, false, true); this->fileStream << Qt::endl; } diff --git a/src/core/logging.cpp b/src/core/logging.cpp index 982ee3f0..8b567e70 100644 --- a/src/core/logging.cpp +++ b/src/core/logging.cpp @@ -21,7 +21,7 @@ void LogManager::messageHandler( auto* self = LogManager::instance(); - LogManager::formatMessage(self->stdoutStream, message, self->colorLogs); + LogManager::formatMessage(self->stdoutStream, message, self->colorLogs, false); self->stdoutStream << Qt::endl; emit self->logMessage(message); @@ -32,7 +32,17 @@ LogManager* LogManager::instance() { return instance; } -void LogManager::formatMessage(QTextStream& stream, const LogMessage& msg, bool color) { +void LogManager::formatMessage( + QTextStream& stream, + const LogMessage& msg, + bool color, + bool timestamp +) { + if (timestamp) { + if (color) stream << "\033[90m"; + stream << msg.time.toString("yyyy-MM-dd hh:mm:ss.zzz"); + } + if (color) { switch (msg.type) { case QtDebugMsg: stream << "\033[34m DEBUG"; break; @@ -62,4 +72,6 @@ void LogManager::formatMessage(QTextStream& stream, const LogMessage& msg, bool if (color && msg.type != QtFatalMsg) stream << "\033[0m"; stream << ": " << msg.body; + + if (color && msg.type == QtFatalMsg) stream << "\033[0m"; } diff --git a/src/core/logging.hpp b/src/core/logging.hpp index 03a880a1..ae9e596e 100644 --- a/src/core/logging.hpp +++ b/src/core/logging.hpp @@ -2,18 +2,26 @@ #include +#include #include #include #include #include struct LogMessage { - explicit LogMessage(QtMsgType type, const char* category, QByteArray body) + explicit LogMessage( + QtMsgType type, + const char* category, + QByteArray body, + QDateTime time = QDateTime::currentDateTime() + ) : type(type) + , time(std::move(time)) , category(category) , body(std::move(body)) {} QtMsgType type; + QDateTime time; const char* category; QByteArray body; }; @@ -24,7 +32,7 @@ class LogManager: public QObject { public: static LogManager* instance(); - static void formatMessage(QTextStream& stream, const LogMessage& msg, bool color); + static void formatMessage(QTextStream& stream, const LogMessage& msg, bool color, bool timestamp); signals: void logMessage(LogMessage msg);