11#include <fmt/chrono.h>
13#include <fmt/ranges.h>
22#include <system_error>
26#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE
27#define SPDLOG_FUNCTION __PRETTY_FUNCTION__
29#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_DEBUG
30#define SPDLOG_FUNCTION __PRETTY_FUNCTION__
32#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_ERROR
34#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_INFO
37#include <spdlog/cfg/env.h>
38#include <spdlog/common.h>
39#include <spdlog/sinks/stdout_color_sinks.h>
40#include <spdlog/spdlog.h>
43#define LOG_TRACE(...) SPDLOG_TRACE(__VA_ARGS__)
44#define LOG_DEBUG(...) SPDLOG_DEBUG(__VA_ARGS__)
45#define LOG_INFO(...) SPDLOG_INFO(__VA_ARGS__)
46#define LOG_WARN(...) SPDLOG_WARN(__VA_ARGS__)
47#define LOG_ERROR(...) SPDLOG_ERROR(__VA_ARGS__)
48#define LOG_FATAL(...) SPDLOG_CRITICAL(__VA_ARGS__)
52#define UNIMPLEMENTED(msg, ...) \
54 LOG_FATAL("Feature not implemented! " msg __VA_OPT__(, ) __VA_ARGS__); \
59#define DEBUG_TIME(expr) \
61 ::asmgrader::detail::DebugTimeHelper debug_time_helper__(#expr); \
65#define DEBUG_TIME(fn, ...)
77 start = std::chrono::steady_clock::now();
81 [[maybe_unused]]
const auto& stop = std::chrono::steady_clock::now();
86 std::chrono::steady_clock::time_point
start;
93 return std::error_code(err, std::generic_category()).message();
103 spdlog::set_level(spdlog::level::warn);
104#elif defined(RELEASE)
105 spdlog::set_level(spdlog::level::err);
107 spdlog::set_level(spdlog::level::info);
111 spdlog::cfg::load_env_levels(
"LOG_LEVEL");
113#if defined(DEBUG) || defined(TRACE)
114 spdlog::set_pattern(
"[%T.%e] [%^%8l%$] [pid %6P] [%30!!@%20!s:%-4#] %v");
121 spdlog::set_pattern(
"[%T.%e] [%^%=8l%$] [pid %6P] %v");
125 spdlog::set_default_logger(spdlog::stderr_color_st(
"default"));
A non-movable and non-copyable type.
Definition class_traits.hpp:38
#define LOG_DEBUG(...)
Definition logging.hpp:44
Definition asm_buffer.hpp:19
void init_loggers()
Definition logging.hpp:101
std::string get_err_msg()
Obtain Linux error (i.e., errno) message via libc functions.
Definition logging.hpp:97
Definition logging.hpp:74
DebugTimeHelper(std::string_view str)
Definition logging.hpp:75
~DebugTimeHelper()
Definition logging.hpp:80
std::chrono::steady_clock::time_point start
Definition logging.hpp:86
std::string_view str_expr
Definition logging.hpp:85