blob: ad6de6ba13b39a827ec3bd94377a69befb5f7e53 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#ifndef LOGGING_H
#define LOGGING_H
#include <iostream>
#include "plugin.h"
#include "spdlog/sinks/base_sink.h"
using spdlog_base_sink = spdlog::sinks::base_sink<std::mutex>;
class PluginSink : public spdlog_base_sink
{
public:
PluginSink(loggerfunc_t logger): spdlog_base_sink()
{
this->ns_logger_ = logger;
}
void sink_it_(const spdlog::details::log_msg& in_msg) override
{
LogMsg msg{};
std::string payload(in_msg.payload.data(), in_msg.payload.size());
msg.level = (int)in_msg.level;
msg.msg = payload.c_str();
msg.timestamp = std::chrono::duration_cast<std::chrono::milliseconds>(in_msg.time.time_since_epoch()).count();
msg.source.file = in_msg.source.filename;
msg.source.func = in_msg.source.funcname;
msg.source.line = in_msg.source.line;
this->ns_logger_(&msg);
}
void flush_() override
{
std::cout << std::flush;
}
protected:
loggerfunc_t ns_logger_;
// sink log level - default is all
spdlog::level_t level_{ spdlog::level::trace };
};
#endif
|