Refactored sink interface and base_sink

This commit is contained in:
gabime
2018-07-14 16:21:53 +03:00
parent 2bc05b6b17
commit c2a49080aa
25 changed files with 200 additions and 120 deletions

View File

@@ -18,13 +18,13 @@ namespace spdlog {
namespace sinks {
template<class TargetStream, class ConsoleMutex>
template<typename TargetStream, typename ConsoleMutex>
class stdout_sink : public sink
{
public:
using mutex_t = typename ConsoleMutex::mutex_t;
stdout_sink()
: mutex_(ConsoleMutex::console_mutex())
: mutex_(ConsoleMutex::mutex())
, file_(TargetStream::stream())
{
}
@@ -45,7 +45,19 @@ public:
void flush() override
{
std::lock_guard<mutex_t> lock(mutex_);
fflush(TargetStream::stream());
fflush(file_);
}
void set_pattern(const std::string &pattern) override SPDLOG_FINAL
{
std::lock_guard<mutex_t> lock(mutex_);
formatter_ = std::unique_ptr<spdlog::formatter>(new pattern_formatter(pattern));
}
void set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) override SPDLOG_FINAL
{
std::lock_guard<mutex_t> lock(mutex_);
formatter_ = std::move(sink_formatter);
}
private:
@@ -53,11 +65,11 @@ private:
FILE *file_;
};
using stdout_sink_mt = stdout_sink<details::console_stdout_stream, details::console_global_mutex>;
using stdout_sink_st = stdout_sink<details::console_stdout_stream, details::console_global_nullmutex>;
using stdout_sink_mt = stdout_sink<details::console_stdout, details::console_mutex>;
using stdout_sink_st = stdout_sink<details::console_stdout, details::console_nullmutex>;
using stderr_sink_mt = stdout_sink<details::console_stderr_stream, details::console_global_mutex>;
using stderr_sink_st = stdout_sink<details::console_stderr_stream, details::console_global_nullmutex>;
using stderr_sink_mt = stdout_sink<details::console_stderr, details::console_mutex>;
using stderr_sink_st = stdout_sink<details::console_stderr, details::console_nullmutex>;
} // namespace sinks