@@ -27,7 +27,7 @@ namespace logging {
2727namespace null {
2828struct config {
2929 struct {
30- template <level, typename >
30+ template <typename >
3131 constexpr auto log (auto &&...) const noexcept -> void {}
3232 } logger;
3333};
@@ -46,33 +46,39 @@ ALWAYS_INLINE constexpr static auto get_config() -> auto & {
4646 }
4747}
4848
49- template <typename Flavor, level L, typename Env, typename ... Ts,
50- typename ... TArgs>
49+ template <typename Flavor, typename Env, typename ... Ts, typename ... TArgs>
5150ALWAYS_INLINE static auto log (TArgs &&...args) -> void {
5251 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)...);
5453}
5554} // namespace logging
5655
5756// NOLINTBEGIN(cppcoreguidelines-macro-usage)
5857
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 >( \
6160 __FILE__, __LINE__, sc::format(MSG##_sc __VA_OPT__ (, ) __VA_ARGS__))
6261
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+
6368#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__)
6570#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__)
6772#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__)
6974#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__)
7176
7277#define CIB_FATAL (MSG, ...) \
7378 [](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); \
7682 FWD (str).apply ([]<typename S, typename ... Args>(S s, Args... args) { \
7783 constexpr auto cts = stdx::ct_string_from_type (s); \
7884 stdx::panic<cts>(args...); \
@@ -93,7 +99,8 @@ ALWAYS_INLINE static auto log_version() -> void {
9399 }) {
94100 l_cfg.logger .template log_build <v_cfg.build_id , v_cfg.version_string >();
95101 } 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 >(
97104 " " , 0 ,
98105 sc::format (" Version: {} ({})" _sc, sc::uint_<v_cfg.build_id >,
99106 stdx::ct_string_to_type<v_cfg.version_string ,
0 commit comments