17#ifndef TOOLBOX_SYS_LOG_HPP 
   18#define TOOLBOX_SYS_LOG_HPP 
   36    template <
typename ValueT>
 
   39        log.os_ << std::forward<ValueT>(
val);
 
 
   53        const auto size{os_.size()};
 
 
   65    constexpr explicit operator bool()
 const { 
return true; }
 
 
   85#define TOOLBOX_LOG(LEVEL) \ 
   86toolbox::is_log_level(LEVEL) && toolbox::Log{toolbox::WallClock::now(), LEVEL}() 
 
   88#define TOOLBOX_CRIT TOOLBOX_LOG(toolbox::LogLevel::Crit) 
   89#define TOOLBOX_ERROR TOOLBOX_LOG(toolbox::LogLevel::Error) 
   90#define TOOLBOX_WARN TOOLBOX_LOG(toolbox::LogLevel::Warn) 
   91#define TOOLBOX_METRIC TOOLBOX_LOG(toolbox::LogLevel::Metric) 
   92#define TOOLBOX_NOTICE TOOLBOX_LOG(toolbox::LogLevel::Notice) 
   93#define TOOLBOX_INFO TOOLBOX_LOG(toolbox::LogLevel::Info) 
   95#if TOOLBOX_BUILD_DEBUG 
   96#define TOOLBOX_DEBUG TOOLBOX_LOG(toolbox::LogLevel::Debug) 
   98#define TOOLBOX_DEBUG false && toolbox::Log{WallClock::now(), toolbox::LogLevel::Debug}()