.. _program_listing_file_gui_logging_Logger.hpp: Program Listing for File Logger.hpp =================================== |exhale_lsh| :ref:`Return to documentation for file ` (``gui/logging/Logger.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include #include #include #include enum class LogLevel : std::uint8_t { DEBUG, INFO, WARN, CRIT }; enum class LogType : std::uint8_t { JSON, SIMPLE }; using LogSettings = struct log_settings { LogLevel filter; LogType type; }; class LogStream { public: static LogSettings SETTINGS; LogStream(LogLevel level, const char *file, int line); ~LogStream(); template auto operator<<(const T &val) -> LogStream & { _ss << val; return *this; } void flush(); static auto log(LogLevel lvl, const char *file, int line) -> LogStream; static void logger_configure(const std::string &log_path, LogLevel level, LogType type); static std::string cleanString(std::string str); private: LogLevel _level; const char *_file; int _line; std::ostringstream _ss; }; class Log : public LogStream {}; #define debug log(LogLevel::DEBUG, __FILE__, __LINE__) #define inf log(LogLevel::INFO, __FILE__, __LINE__) #define warn log(LogLevel::WARN, __FILE__, __LINE__) #define failed log(LogLevel::CRIT, __FILE__, __LINE__)