1
0
mirror of https://github.com/gabime/spdlog.git synced 2025-04-29 12:03:53 +00:00
spdlog/include/spdlog/sinks/callback_sink.h
Gabi Melman 83c9ede9e6
Asink sink (#3309)
Replace async logger with async sink
2025-01-05 02:17:31 +02:00

40 lines
980 B
C++

// Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
#pragma once
#include <mutex>
#include <string>
#include "../details/null_mutex.h"
#include "./base_sink.h"
namespace spdlog {
// callbacks type
typedef std::function<void(const details::log_msg &msg)> custom_log_callback;
namespace sinks {
/*
* Trivial callback sink, gets a callback function and calls it on each log
*/
template <typename Mutex>
class callback_sink final : public base_sink<Mutex> {
public:
explicit callback_sink(const custom_log_callback &callback)
: callback_{callback} {}
protected:
void sink_it_(const details::log_msg &msg) override { callback_(msg); }
void flush_() override {}
private:
custom_log_callback callback_;
};
using callback_sink_mt = callback_sink<std::mutex>;
using callback_sink_st = callback_sink<details::null_mutex>;
} // namespace sinks
} // namespace spdlog