ipfs-chromium
Loading...
Searching...
No Matches
log_recorder.h
1#ifndef LOG_RECORDER_H
2#define LOG_RECORDER_H
3
4#include <ipfs_client/logger.h>
5
6#include <cassert>
7#include <vector>
8
9namespace {
10struct LogRecorder {
11 static LogRecorder* me;
12 LogRecorder() {
13 assert(!me);
14 me = this;
15 ipfs::log::SetHandler(Handle);
16 }
17 ~LogRecorder() {
18 ipfs::log::SetHandler(&ipfs::log::DefaultHandler);
19 assert(me == this);
20 me = nullptr;
21 }
22 struct LogMessage {
23 std::string message;
24 std::string_view file;
25 int line;
26 ipfs::log::Level level;
27 };
28 std::vector<LogMessage> messages;
29 static void Handle(std::string const& msg, char const* fil, int lin, ipfs::log::Level lev) {
30 assert(me);
31 me->messages.push_back({msg, fil, lin, lev});
32 }
33};
34LogRecorder* LogRecorder::me = nullptr;
35}
36
37#endif // LOG_RECORDER_H