1 // 2 // Copyright(c) 2015 Gabi Melman. 3 // Distributed under the MIT License (http://opensource.org/licenses/MIT) 4 // 5 6 7 #pragma once 8 9 #include <spdlog/details/log_msg.h> 10 11 namespace spdlog 12 { 13 namespace sinks 14 { 15 class sink 16 { 17 public: sink()18 sink(): _level( level::trace ) {} 19 ~sink()20 virtual ~sink() {} 21 virtual void log(const details::log_msg& msg) = 0; 22 virtual void flush() = 0; 23 24 bool should_log(level::level_enum msg_level) const; 25 void set_level(level::level_enum log_level); 26 level::level_enum level() const; 27 28 private: 29 level_t _level; 30 31 }; 32 should_log(level::level_enum msg_level)33inline bool sink::should_log(level::level_enum msg_level) const 34 { 35 return msg_level >= _level.load(std::memory_order_relaxed); 36 } 37 set_level(level::level_enum log_level)38inline void sink::set_level(level::level_enum log_level) 39 { 40 _level.store(log_level); 41 } 42 level()43inline level::level_enum sink::level() const 44 { 45 return static_cast<spdlog::level::level_enum>(_level.load(std::memory_order_relaxed)); 46 } 47 48 } 49 } 50 51