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
13{
14public:
15 virtual ~sink() = default;
16 virtual void log(const details::log_msg &msg) = 0;
17 virtual void flush() = 0;
18 virtual void set_pattern(const std::string &pattern) = 0;
19 virtual void set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) = 0;
20
21 void set_level(level::level_enum log_level);
22 level::level_enum level() const;
23 bool should_log(level::level_enum msg_level) const;
24
25protected:
26 // sink log level - default is all
27 level_t level_{level::trace};
28};
29
30} // namespace sinks
31} // namespace spdlog
32
33#ifdef SPDLOG_HEADER_ONLY
34# include "sink-inl.h"
35#endif
36