delpi
0.0.1
DElta-complete LP solver
Toggle main menu visibility
Loading...
Searching...
No Matches
logging.h
1
12
#pragma once
13
14
#include <fmt/core.h>
// IWYU pragma: export
15
#include <fmt/ostream.h>
// IWYU pragma: export
16
#include <fmt/ranges.h>
// IWYU pragma: export
17
18
#define OSTREAM_FORMATTER(type) \
19
template <> \
20
struct fmt::formatter<type> : ostream_formatter {};
21
22
#ifndef NLOG
23
24
#include <spdlog/logger.h>
25
26
#include <memory>
27
28
namespace
delpi
{
29
30
enum class
LoggerType { OUT, ERR };
31
32
std::shared_ptr<spdlog::logger> get_logger(LoggerType logger_type);
33
34
}
// namespace delpi
35
36
#define DELPI_FORMAT(message, ...) fmt::format(message, __VA_ARGS__)
37
38
#define DELPI_VERBOSITY_TO_LOG_LEVEL(verbosity) \
39
((verbosity) == 0 \
40
? spdlog::level::critical \
41
: ((verbosity) == 1 \
42
? spdlog::level::err \
43
: ((verbosity) == 2 \
44
? spdlog::level::warn \
45
: ((verbosity) == 3 \
46
? spdlog::level::info \
47
: ((verbosity) == 4 ? spdlog::level::debug \
48
: ((verbosity) == 5 ? spdlog::level::trace : spdlog::level::off))))))
49
#define DELPI_LOG_INIT_VERBOSITY(verbosity) DELPI_LOG_INIT_LEVEL(DELPI_VERBOSITY_TO_LOG_LEVEL(verbosity))
50
#define DELPI_LOG_INIT_LEVEL(level) \
51
do { \
52
::delpi::get_logger(::delpi::LoggerType::OUT)->set_level(level); \
53
::delpi::get_logger(::delpi::LoggerType::ERR)->set_level(level); \
54
} while (0)
55
#define DELPI_TRACE(msg) ::delpi::get_logger(::delpi::LoggerType::OUT)->trace(msg)
56
#define DELPI_TRACE_FMT(msg, ...) ::delpi::get_logger(::delpi::LoggerType::OUT)->trace(msg, __VA_ARGS__)
57
#define DELPI_DEBUG(msg) ::delpi::get_logger(::delpi::LoggerType::OUT)->debug(msg)
58
#define DELPI_DEBUG_FMT(msg, ...) ::delpi::get_logger(::delpi::LoggerType::OUT)->debug(msg, __VA_ARGS__)
59
#define DELPI_INFO(msg) ::delpi::get_logger(::delpi::LoggerType::OUT)->info(msg)
60
#define DELPI_INFO_FMT(msg, ...) ::delpi::get_logger(::delpi::LoggerType::OUT)->info(msg, __VA_ARGS__)
61
#define DELPI_WARN(msg) ::delpi::get_logger(::delpi::LoggerType::ERR)->warn(msg)
62
#define DELPI_WARN_FMT(msg, ...) ::delpi::get_logger(::delpi::LoggerType::ERR)->warn(msg, __VA_ARGS__)
63
#define DELPI_ERROR(msg) ::delpi::get_logger(::delpi::LoggerType::ERR)->error(msg)
64
#define DELPI_ERROR_FMT(msg, ...) ::delpi::get_logger(::delpi::LoggerType::ERR)->error(msg, __VA_ARGS__)
65
#define DELPI_CRITICAL(msg) ::delpi::get_logger(::delpi::LoggerType::ERR)->critical(msg)
66
#define DELPI_CRITICAL_FMT(msg, ...) ::delpi::get_logger(::delpi::LoggerType::ERR)->critical(msg, __VA_ARGS__)
67
#define DELPI_INFO_ENABLED (::delpi::get_logger(::delpi::LoggerType::OUT)->should_log(spdlog::level::info))
68
#define DELPI_TRACE_ENABLED (::delpi::get_logger(::delpi::LoggerType::OUT)->should_log(spdlog::level::trace))
69
70
#ifndef NDEBUG
71
72
#include <iostream>
73
#include <thread>
74
75
#define DELPI_DEV(msg) \
76
do { \
77
if (::delpi::get_logger(::delpi::LoggerType::ERR)->should_log(spdlog::level::err)) \
78
fmt::println("[{:%Y-%m-%d %H:%M:%S}] [\033[1m\033[35mDEV\033[0m] [thread {}] " msg "", \
79
std::chrono::system_clock::now(), std::hash<std::thread::id>{}(std::this_thread::get_id())); \
80
std::cout << std::flush; \
81
} while (0)
82
#define DELPI_DEV_FMT(msg, ...) \
83
do { \
84
if (::delpi::get_logger(::delpi::LoggerType::ERR)->should_log(spdlog::level::err)) \
85
fmt::println("[{:%Y-%m-%d %H:%M:%S}] [\033[1m\033[35mDEV\033[0m] [thread {}] " msg "", \
86
std::chrono::system_clock::now(), std::hash<std::thread::id>{}(std::this_thread::get_id()), \
87
__VA_ARGS__); \
88
std::cout << std::flush; \
89
} while (0)
90
91
#define DELPI_DEV_TRACE(msg) DELPI_DEV(msg)
92
#define DELPI_DEV_TRACE_FMT(msg, ...) DELPI_DEV_FMT(msg, __VA_ARGS__)
93
#define DELPI_DEV_DEBUG(msg) DELPI_DEV(msg)
94
#define DELPI_DEV_DEBUG_FMT(msg, ...) DELPI_DEV_FMT(msg, __VA_ARGS__)
95
#else
96
#define DELPI_DEV(msg) void(0)
97
#define DELPI_DEV_FMT(msg, ...) void(0)
98
#define DELPI_DEV_TRACE(msg) DELPI_TRACE(msg)
99
#define DELPI_DEV_TRACE_FMT(msg, ...) DELPI_TRACE_FMT(msg, __VA_ARGS__)
100
#define DELPI_DEV_DEBUG(msg) DELPI_DEBUG(msg)
101
#define DELPI_DEV_DEBUG_FMT(msg, ...) DELPI_DEBUG_FMT(msg, __VA_ARGS__)
102
#endif
103
104
#else
105
106
#define DELPI_FORMAT(message, ...) fmt::format(message, __VA_ARGS__)
107
#define DELPI_VERBOSITY_TO_LOG_LEVEL(verbosity) 0
108
#define DELPI_LOG_INIT_LEVEL(level) void(0)
109
#define DELPI_LOG_INIT_VERBOSITY(verbosity) void(0)
110
#define DELPI_TRACE(msg) void(0)
111
#define DELPI_TRACE_FMT(msg, ...) void(0)
112
#define DELPI_DEBUG(msg) void(0)
113
#define DELPI_DEBUG_FMT(msg, ...) void(0)
114
#define DELPI_INFO(msg) void(0)
115
#define DELPI_INFO_FMT(msg, ...) void(0)
116
#define DELPI_WARN(msg) void(0)
117
#define DELPI_WARN_FMT(msg, ...) void(0)
118
#define DELPI_ERROR(msg) void(0)
119
#define DELPI_ERROR_FMT(msg, ...) void(0)
120
#define DELPI_CRITICAL(msg) void(0)
121
#define DELPI_CRITICAL_FMT(msg, ...) void(0)
122
#define DELPI_INFO_ENABLED false
123
#define DELPI_TRACE_ENABLED false
124
#define DELPI_DEV(msg) void(0)
125
#define DELPI_DEV_FMT(msg, ...) void(0)
126
#define DELPI_DEV_TRACE(msg) void(0)
127
#define DELPI_DEV_TRACE_FMT(msg, ...) void(0)
128
#define DELPI_DEV_DEBUG(msg) void(0)
129
#define DELPI_DEV_DEBUG_FMT(msg, ...) void(0)
130
131
#endif
delpi
Global namespace for the delpi library.
delpi
util
logging.h
Generated by
1.17.0