1// Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2// Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
4#pragma once
5
6#include <spdlog/details/log_msg.h>
7#include <spdlog/formatter.h>
8
9namespace spdlog {
10
11namespace sinks {
12class SPDLOG_API sink {
13public:
14 virtual ~sink() = default;
15 virtual void log(const details::log_msg &msg) = 0;
16 virtual void flush() = 0;
17 virtual void set_pattern(const std::string &pattern) = 0;
18 virtual void set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) = 0;
19
20 void set_level(level::level_enum log_level);
21 level::level_enum level() const;
22 bool should_log(level::level_enum msg_level) const;
23
24protected:
25 // sink log level - default is all
26 level_t level_{level::trace};
27};
28
29} // namespace sinks
30} // namespace spdlog
31
32#ifdef SPDLOG_HEADER_ONLY
33 #include "sink-inl.h"
34#endif
35