added level_t to sink. Improves the flexibility of loggers with multiple sinks

This commit is contained in:
davide
2016-09-12 22:26:38 +02:00
parent c69df8ae44
commit b67076fc85
5 changed files with 41 additions and 8 deletions

View File

@@ -15,10 +15,33 @@ namespace sinks
class sink
{
public:
sink(): _level( level::trace ) {}
virtual ~sink() {}
virtual void log(const details::log_msg& msg) = 0;
virtual void flush() = 0;
bool should_log(level::level_enum msg_level) const;
void set_level(level::level_enum log_level);
level::level_enum level() const;
private:
level_t _level;
};
inline bool sink::should_log(level::level_enum msg_level) const {
return msg_level >= _level.load(std::memory_order_relaxed);
}
inline void sink::set_level(level::level_enum log_level) {
_level.store(log_level);
}
inline level::level_enum sink::level() const {
return static_cast<spdlog::level::level_enum>(_level.load(std::memory_order_relaxed));
}
}
}