11#include <fmt/chrono.h>
13#include <fmt/ranges.h>
22#include <system_error>
25#if defined(DEBUG) || defined(TRACE)
26#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE
27#define SPDLOG_FUNCTION __PRETTY_FUNCTION__
29#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_ERROR
31#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_INFO
34#include <spdlog/cfg/env.h>
35#include <spdlog/common.h>
36#include <spdlog/sinks/stdout_color_sinks.h>
37#include <spdlog/spdlog.h>
40#define LOG_TRACE(...) SPDLOG_TRACE(__VA_ARGS__)
41#define LOG_DEBUG(...) SPDLOG_DEBUG(__VA_ARGS__)
42#define LOG_INFO(...) SPDLOG_INFO(__VA_ARGS__)
43#define LOG_WARN(...) SPDLOG_WARN(__VA_ARGS__)
44#define LOG_ERROR(...) SPDLOG_ERROR(__VA_ARGS__)
45#define LOG_FATAL(...) SPDLOG_CRITICAL(__VA_ARGS__)
49#define UNIMPLEMENTED(msg, ...) \
51 LOG_FATAL("Feature not implemented! " msg __VA_OPT__(, ) __VA_ARGS__); \
56#define DEBUG_TIME(expr) \
58 ::asmgrader::detail::DebugTimeHelper debug_time_helper__(#expr); \
62#define DEBUG_TIME(fn, ...)
74 start = std::chrono::steady_clock::now();
78 [[maybe_unused]]
const auto& stop = std::chrono::steady_clock::now();
83 std::chrono::steady_clock::time_point
start;
90 return std::error_code(err, std::generic_category()).message();
100 spdlog::set_level(spdlog::level::warn);
101#elif defined(RELEASE)
102 spdlog::set_level(spdlog::level::err);
104 spdlog::set_level(spdlog::level::info);
108 spdlog::cfg::load_env_levels(
"LOG_LEVEL");
110#if defined(DEBUG) || defined(TRACE)
111 spdlog::set_pattern(
"[%T.%e] [%^%8l%$] [pid %6P] [%30!!@%20!s:%-4#] %v");
118 spdlog::set_pattern(
"[%T.%e] [%^%=8l%$] [pid %6P] %v");
122 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:41
Definition asm_buffer.hpp:20
void init_loggers()
Definition logging.hpp:98
std::string get_err_msg()
Obtain Linux error (i.e., errno) message via libc functions.
Definition logging.hpp:94
Definition logging.hpp:71
DebugTimeHelper(std::string_view str)
Definition logging.hpp:72
~DebugTimeHelper()
Definition logging.hpp:77
std::chrono::steady_clock::time_point start
Definition logging.hpp:83
std::string_view str_expr
Definition logging.hpp:82