Photon 1.0.0
Loading...
Searching...
No Matches
callback_sink.h
Go to the documentation of this file.
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
9
10#include <mutex>
11#include <string>
12
13namespace spdlog
14{
15
16 // callbacks type
17 typedef std::function<void(const details::log_msg& msg)> custom_log_callback;
18
19 namespace sinks
20 {
21 /*
22 * Trivial callback sink, gets a callback function and calls it on each log
23 */
24 template <typename Mutex>
25 class callback_sink final : public base_sink<Mutex>
26 {
27 public:
28 explicit callback_sink(const custom_log_callback& callback)
29 : callback_{callback}
30 {
31 }
32
33 protected:
34 void sink_it_(const details::log_msg& msg) override
35 {
36 callback_(msg);
37 }
38 void flush_() override {};
39
40 private:
42 };
43
46
47 } // namespace sinks
48
49 //
50 // factory functions
51 //
52 template <typename Factory = spdlog::synchronous_factory>
53 inline std::shared_ptr<logger> callback_logger_mt(const std::string& logger_name, const custom_log_callback& callback)
54 {
55 return Factory::template create<sinks::callback_sink_mt>(logger_name, callback);
56 }
57
58 template <typename Factory = spdlog::synchronous_factory>
59 inline std::shared_ptr<logger> callback_logger_st(const std::string& logger_name, const custom_log_callback& callback)
60 {
61 return Factory::template create<sinks::callback_sink_st>(logger_name, callback);
62 }
63
64} // namespace spdlog
Definition base_sink.h:22
Definition callback_sink.h:26
callback_sink(const custom_log_callback &callback)
Definition callback_sink.h:28
void flush_() override
Definition callback_sink.h:38
void sink_it_(const details::log_msg &msg) override
Definition callback_sink.h:34
custom_log_callback callback_
Definition callback_sink.h:41
callback_sink< std::mutex > callback_sink_mt
Definition callback_sink.h:44
callback_sink< details::null_mutex > callback_sink_st
Definition callback_sink.h:45
Definition async.h:26
std::function< void(const details::log_msg &msg)> custom_log_callback
Definition callback_sink.h:17
std::shared_ptr< logger > callback_logger_st(const std::string &logger_name, const custom_log_callback &callback)
Definition callback_sink.h:59
std::shared_ptr< logger > callback_logger_mt(const std::string &logger_name, const custom_log_callback &callback)
Definition callback_sink.h:53
Definition log_msg.h:14