Photon 1.0.0
Loading...
Searching...
No Matches
udp_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
6#include <spdlog/common.h>
9#ifdef _WIN32
11#else
13#endif
14
15#include <mutex>
16#include <string>
17#include <chrono>
18#include <functional>
19
20// Simple udp client sink
21// Sends formatted log via udp
22
23namespace spdlog
24{
25 namespace sinks
26 {
27
29 {
30 std::string server_host;
31 uint16_t server_port;
32
33 udp_sink_config(std::string host, uint16_t port)
34 : server_host{std::move(host)}, server_port{port}
35 {
36 }
37 };
38
39 template <typename Mutex>
40 class udp_sink : public spdlog::sinks::base_sink<Mutex>
41 {
42 public:
43 // host can be hostname or ip address
44 explicit udp_sink(udp_sink_config sink_config)
45 : client_{sink_config.server_host, sink_config.server_port}
46 {
47 }
48
49 ~udp_sink() override = default;
50
51 protected:
52 void sink_it_(const spdlog::details::log_msg& msg) override
53 {
54 spdlog::memory_buf_t formatted;
55 spdlog::sinks::base_sink<Mutex>::formatter_->format(msg, formatted);
56 client_.send(formatted.data(), formatted.size());
57 }
58
59 void flush_() override
60 {
61 }
63 };
64
67
68 } // namespace sinks
69
70 //
71 // factory functions
72 //
73 template <typename Factory = spdlog::synchronous_factory>
74 inline std::shared_ptr<logger> udp_logger_mt(const std::string& logger_name, sinks::udp_sink_config skin_config)
75 {
76 return Factory::template create<sinks::udp_sink_mt>(logger_name, skin_config);
77 }
78
79} // namespace spdlog
Definition udp_client-windows.h:29
void send(const char *data, size_t n_bytes)
Definition udp_client-windows.h:105
Definition base_sink.h:22
Definition udp_sink.h:41
~udp_sink() override=default
details::udp_client client_
Definition udp_sink.h:62
void flush_() override
Definition udp_sink.h:59
void sink_it_(const spdlog::details::log_msg &msg) override
Definition udp_sink.h:52
udp_sink(udp_sink_config sink_config)
Definition udp_sink.h:44
udp_sink< spdlog::details::null_mutex > udp_sink_st
Definition udp_sink.h:66
udp_sink< std::mutex > udp_sink_mt
Definition udp_sink.h:65
Definition async.h:26
std::shared_ptr< logger > udp_logger_mt(const std::string &logger_name, sinks::udp_sink_config skin_config)
Definition udp_sink.h:74
fmt::basic_memory_buffer< char, 250 > memory_buf_t
Definition common.h:173
Definition uuid.h:926
Definition log_msg.h:14
Definition udp_sink.h:29
uint16_t server_port
Definition udp_sink.h:31
udp_sink_config(std::string host, uint16_t port)
Definition udp_sink.h:33
std::string server_host
Definition udp_sink.h:30