add liblokinet custom logger

pull/1748/head
Jeff Becker 3 years ago committed by Jeff
parent b31cac4b71
commit 65b29a1b70

@ -21,6 +21,12 @@ extern "C"
int EXPORT
lokinet_log_level(const char*);
typedef void (*lokinet_logger_func)(const char*, void*);
/// set a custom logger function
void EXPORT
lokinet_set_logger(lokinet_logger_func func, void* user);
/// @brief take in hex and turn it into base32z
/// @return value must be free()'d later
char* EXPORT

@ -22,6 +22,33 @@
namespace
{
struct Logger : public llarp::ILogStream
{
lokinet_logger_func func;
void* user;
explicit Logger(lokinet_logger_func _func, void* _user) : func{_func}, user{_user}
{}
void
PreLog(std::stringstream&, llarp::LogLevel, const char*, int, const std::string&) const override
{}
void
Print(llarp::LogLevel, const char*, const std::string& msg) override
{
func(msg.c_str(), user);
}
void
PostLog(std::stringstream&) const override{};
void
ImmediateFlush() override{};
void Tick(llarp_time_t) override{};
};
struct Context : public llarp::Context
{
using llarp::Context::Context;
@ -1028,4 +1055,10 @@ extern "C"
}
return EINVAL;
}
void EXPORT
lokinet_set_logger(lokinet_logger_func func, void* user)
{
llarp::LogContext::Instance().logStream.reset(new Logger{func, user});
}
}

Loading…
Cancel
Save