diff --git a/src/Lib/Log.cc b/src/Lib/Log.cc index 4da5f3b178144b5efe7bccc8db5a28045317d55c..51a8ee1ab948180fc2d0d456878b2ba9374fe38b 100644 --- a/src/Lib/Log.cc +++ b/src/Lib/Log.cc @@ -62,8 +62,16 @@ void LogSink::recieveLogMessage(const Logger *const logger, LogMessage &&msg) noexcept { const std::lock_guard<std::mutex> messageQueueLockGuard(messageQueueLock); + const bool isFatal = msg.getHeader().severity == LogLevel::Critical; + messageQueue.emplace_back(std::make_tuple<const std::string_view, LogMessage>( logger->getCategoryView(), std::move(msg.sink()))); + + if (isFatal) { + std::cerr << "-->>Found a fatal log! flush the message queue and abort<<--\n"; + flush(); + abort(); + } } // Flush all LogMessages to all of the LogSinkDispatchers. Also clear the message queue.