diff options
Diffstat (limited to 'source/10-common/Log.hpp')
-rw-r--r-- | source/10-common/Log.hpp | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/source/10-common/Log.hpp b/source/10-common/Log.hpp deleted file mode 100644 index aeba984..0000000 --- a/source/10-common/Log.hpp +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -#include "RingBuffer.hpp" - -#include <fmt/format.h> -#include <chrono> -#include <source_location> -#include <string_view> - -// NOTE: we keep this on one line so std::soruce_location reports the correct information -#define GENERIC_LOG(lvl, fmtString, ...) Log::Add(Log::Message{ .level = lvl, .time = std::chrono::system_clock::now(), .srcLoc = std::source_location::current(), .text = fmt::format(fmtString __VA_OPT__(, ) __VA_ARGS__) }) - -#define LOG_DEBUG(...) GENERIC_LOG(Log::MessageLevel::Debug, __VA_ARGS__) -#define LOG_INFO(...) GENERIC_LOG(Log::MessageLevel::Info, __VA_ARGS__) -#define LOG_WARNING(...) GENERIC_LOG(Log::MessageLevel::Warning, __VA_ARGS__) -#define LOG_ERROR(...) GENERIC_LOG(Log::MessageLevel::Error, __VA_ARGS__) - -namespace Log { -enum class MessageLevel { - Debug, - Info, - Warning, - Error, -}; - -struct Message { - MessageLevel level; - std::chrono::time_point<std::chrono::system_clock> time; - std::source_location srcLoc; - std::string text; -}; - -/// A mRing buffer of log messages for programmatic inspection at runtime. -struct MessageBuffer { - RingBuffer<Message> messages; -}; - -/// Unique ID identifying a currently registered MessageBuffer. -using MessageBufferId = int; - -MessageBufferId RegisterBuffer(MessageBuffer& buffer); -void UnregisterBuffer(MessageBufferId id); -MessageBuffer* GetBuffer(MessageBufferId id); -void DumpRegisteredBuffers(); - -extern bool gPrintToStdOut; -#if BRUSSEL_DEV_ENV -// NOTE: initialized in main.cpp -extern MessageBuffer gDefaultBuffer; -extern MessageBufferId gDefaultBufferId; -#endif - -// TODO improve this interface: don't copy std::string when there is in fact no MessageBuffer registered -void Add(const Message& msg); -} // namespace Log |