@@ -27,7 +27,7 @@ namespace logging {
27
27
namespace null {
28
28
struct config {
29
29
struct {
30
- template <level, typename >
30
+ template <typename >
31
31
constexpr auto log (auto &&...) const noexcept -> void {}
32
32
} logger;
33
33
};
@@ -46,33 +46,39 @@ ALWAYS_INLINE constexpr static auto get_config() -> auto & {
46
46
}
47
47
}
48
48
49
- template <typename Flavor, level L, typename Env, typename ... Ts,
50
- typename ... TArgs>
49
+ template <typename Flavor, typename Env, typename ... Ts, typename ... TArgs>
51
50
ALWAYS_INLINE static auto log (TArgs &&...args) -> void {
52
51
auto &cfg = get_config<Flavor, Ts...>();
53
- cfg.logger .template log <L, Env>(std::forward<TArgs>(args)...);
52
+ cfg.logger .template log <Env>(std::forward<TArgs>(args)...);
54
53
}
55
54
} // namespace logging
56
55
57
56
// NOLINTBEGIN(cppcoreguidelines-macro-usage)
58
57
59
- #define CIB_LOG (FLAVOR, LEVEL, MSG, ...) \
60
- logging::log<FLAVOR, LEVEL, cib_log_env_t >( \
58
+ #define CIB_LOG (FLAVOR, MSG, ...) \
59
+ logging::log<FLAVOR, cib_log_env_t >( \
61
60
__FILE__, __LINE__, sc::format(MSG##_sc __VA_OPT__ (, ) __VA_ARGS__))
62
61
62
+ #define CIB_LOG_WITH_LEVEL (LEVEL, ...) \
63
+ do { \
64
+ CIB_LOG_ENV (logging::get_level, LEVEL); \
65
+ CIB_LOG (logging::default_flavor_t __VA_OPT__ (, ) __VA_ARGS__); \
66
+ } while (false )
67
+
63
68
#define CIB_TRACE (...) \
64
- CIB_LOG (logging::default_flavor_t , logging:: level::TRACE, __VA_ARGS__)
69
+ CIB_LOG_WITH_LEVEL (logging::level::TRACE __VA_OPT__ (, ) __VA_ARGS__)
65
70
#define CIB_INFO (...) \
66
- CIB_LOG (logging::default_flavor_t , logging:: level::INFO, __VA_ARGS__)
71
+ CIB_LOG_WITH_LEVEL (logging::level::INFO __VA_OPT__ (, ) __VA_ARGS__)
67
72
#define CIB_WARN (...) \
68
- CIB_LOG (logging::default_flavor_t , logging:: level::WARN, __VA_ARGS__)
73
+ CIB_LOG_WITH_LEVEL (logging::level::WARN __VA_OPT__ (, ) __VA_ARGS__)
69
74
#define CIB_ERROR (...) \
70
- CIB_LOG (logging::default_flavor_t , logging:: level::ERROR, __VA_ARGS__)
75
+ CIB_LOG_WITH_LEVEL (logging::level::ERROR __VA_OPT__ (, ) __VA_ARGS__)
71
76
72
77
#define CIB_FATAL (MSG, ...) \
73
78
[](auto &&str) { \
74
- logging::log<logging::default_flavor_t , logging::level::FATAL, \
75
- cib_log_env_t >(__FILE__, __LINE__, str); \
79
+ CIB_LOG_ENV (logging::get_level, logging::level::FATAL); \
80
+ logging::log<logging::default_flavor_t , cib_log_env_t >(__FILE__, \
81
+ __LINE__, str); \
76
82
FWD (str).apply ([]<typename S, typename ... Args>(S s, Args... args) { \
77
83
constexpr auto cts = stdx::ct_string_from_type (s); \
78
84
stdx::panic<cts>(args...); \
@@ -93,7 +99,8 @@ ALWAYS_INLINE static auto log_version() -> void {
93
99
}) {
94
100
l_cfg.logger .template log_build <v_cfg.build_id , v_cfg.version_string >();
95
101
} else {
96
- l_cfg.logger .template log <level::MAX, cib_log_env_t >(
102
+ CIB_LOG_ENV (logging::get_level, logging::level::MAX);
103
+ l_cfg.logger .template log <cib_log_env_t >(
97
104
" " , 0 ,
98
105
sc::format (" Version: {} ({})" _sc, sc::uint_<v_cfg.build_id >,
99
106
stdx::ct_string_to_type<v_cfg.version_string ,
0 commit comments