smats  0.0.1
Satisfability Modulo Arithmetic Theories Symbols
Loading...
Searching...
No Matches
logging.h
1
13#pragma once
14
15#ifndef NLOG
16
17#include <fmt/core.h> // IWYU pragma: export
18#include <fmt/ranges.h> // IWYU pragma: export
19#include <spdlog/logger.h>
20
21#include <memory>
22
23namespace smats {
24
25std::shared_ptr<spdlog::logger> get_logger(bool to_stdout); // NOLINT
26
27} // namespace smats
28
29#define SMATS_VERBOSITY_TO_LOG_LEVEL(verbosity) \
30 ((verbosity) == 0 \
31 ? spdlog::level::critical \
32 : ((verbosity) == 1 \
33 ? spdlog::level::err \
34 : ((verbosity) == 2 \
35 ? spdlog::level::warn \
36 : ((verbosity) == 3 \
37 ? spdlog::level::info \
38 : ((verbosity) == 4 ? spdlog::level::debug \
39 : ((verbosity) == 5 ? spdlog::level::trace : spdlog::level::off))))))
40#define SMATS_LOG_INIT_VERBOSITY(verbosity) SMATS_LOG_INIT_LEVEL(SMATS_VERBOSITY_TO_LOG_LEVEL(verbosity))
41#define SMATS_LOG_INIT_LEVEL(level) \
42 do { \
43 ::smats::get_logger(true)->set_level(level); \
44 ::smats::get_logger(false)->set_level(level); \
45 } while (0)
46#define SMATS_TRACE(msg) ::smats::get_logger(true)->trace(msg)
47#define SMATS_TRACE_FMT(msg, ...) ::smats::get_logger(true)->trace(msg, __VA_ARGS__)
48#define SMATS_DEBUG(msg) ::smats::get_logger(true)->debug(msg)
49#define SMATS_DEBUG_FMT(msg, ...) ::smats::get_logger(true)->debug(msg, __VA_ARGS__)
50#define SMATS_INFO(msg) ::smats::get_logger(true)->info(msg)
51#define SMATS_INFO_FMT(msg, ...) ::smats::get_logger(true)->info(msg, __VA_ARGS__)
52#define SMATS_WARN(msg) ::smats::get_logger(false)->warn(msg)
53#define SMATS_WARN_FMT(msg, ...) ::smats::get_logger(false)->warn(msg, __VA_ARGS__)
54#define SMATS_ERROR(msg) ::smats::get_logger(false)->error(msg)
55#define SMATS_ERROR_FMT(msg, ...) ::smats::get_logger(false)->error(msg, __VA_ARGS__)
56#define SMATS_CRITICAL(msg) ::smats::get_logger(false)->critical(msg)
57#define SMATS_CRITICAL_FMT(msg, ...) ::smats::get_logger(false)->critical(msg, __VA_ARGS__)
58#define SMATS_INFO_ENABLED (::smats::get_logger(true)->should_log(spdlog::level::info))
59#define SMATS_TRACE_ENABLED (::smats::get_logger(true)->should_log(spdlog::level::trace))
60
61#else
62
63#include <fmt/core.h> // IWYU pragma: export
64
65#define OSTREAM_FORMATTER(type)
66#define SMATS_VERBOSITY_TO_LOG_LEVEL(verbosity) 0
67#define SMATS_LOG_INIT_LEVEL(level) void(0)
68#define SMATS_LOG_INIT_VERBOSITY(verbosity) void(0)
69#define SMATS_TRACE(msg) void(0)
70#define SMATS_TRACE_FMT(msg, ...) void(0)
71#define SMATS_DEBUG(msg) void(0)
72#define SMATS_DEBUG_FMT(msg, ...) void(0)
73#define SMATS_INFO(msg) void(0)
74#define SMATS_INFO_FMT(msg, ...) void(0)
75#define SMATS_WARN(msg) void(0)
76#define SMATS_WARN_FMT(msg, ...) void(0)
77#define SMATS_ERROR(msg) void(0)
78#define SMATS_ERROR_FMT(msg, ...) void(0)
79#define SMATS_CRITICAL(msg) void(0)
80#define SMATS_CRITICAL_FMT(msg, ...) void(0)
81#define SMATS_INFO_ENABLED false
82#define SMATS_TRACE_ENABLED false
83
84#endif
ExpressionKind enum.