12template<
bool Ansi = true>
20 case LogInfo:
return "\033[37mI";
21 case LogWarn:
return "\033[33mW";
42template<
typename ...Args>
45 constexpr size_t kN =
sizeof...(Args);
55#define LOG(TAG, LEVEL, FORMAT, ...) Foundation_Log(#TAG, LEVEL, FORMAT __VA_OPT__(,) __VA_ARGS__);
57#define CHECK(expr) if(!(expr)) { \
58 LOG(Core, LogError, "Check failed: " #expr); \
59 throw std::runtime_error( #expr ); \
62#define CHECK_MSG(expr, format_str, ...) if(!(expr)) { \
63 LOG(Core, LogError, format_str __VA_OPT__(,) __VA_ARGS__); \
64 throw std::runtime_error( #expr ); \
void Foundation_Log(const char *tag, LogLevel level, fmt::format_string< Args... > format, Args &&... args)
Definition Logging.hpp:43
constexpr const char * format_as(LogLevel level)
Definition Logging.hpp:13
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:10