17 case LogInfo:
return "\033[37mI";
19 case LogWarn:
return "\033[33mW";
26template<
typename ...Args>
29 constexpr size_t kN =
sizeof...(Args);
39#define LOG(TAG, LEVEL, FORMAT, ...) Foundation_Log(#TAG, LEVEL, FORMAT __VA_OPT__(,) __VA_ARGS__);
41#define CHECK(expr) if(!(expr)) { \
42 LOG(Core, LogError, "Check failed: " #expr); \
43 throw std::runtime_error( #expr ); \
46#define CHECK_MSG(expr, format_str, ...) if(!(expr)) { \
47 LOG(Core, LogError, format_str __VA_OPT__(,) __VA_ARGS__); \
48 throw std::runtime_error( #expr ); \
void Foundation_Log(const char *tag, LogLevel level, fmt::format_string< Args... > format, Args &&... args)
Definition Logging.hpp:27
constexpr const char * format_as(LogLevel level)
Definition Logging.hpp:12
LogLevel
Definition Logging.hpp:5
@ LogWarn
Definition Logging.hpp:8
@ LogDebug
Definition Logging.hpp:6
@ LogError
Definition Logging.hpp:9
@ LogInfo
Definition Logging.hpp:7
void Foundation_LogImpl(LogLevel level, const char *tag, std::string_view formatted)
Definition Logging.cpp:6