Allow log level to be specified in constructor

It can still be set using `lmq.log_level(...)`, but this can be slightly
more convenient -- and without this log messages in the constructor are
completely useless.
This commit is contained in:
Jason Rhinelander 2020-03-29 15:20:03 -03:00
parent b66f653708
commit bd196d08b8
2 changed files with 15 additions and 8 deletions

View File

@ -203,9 +203,10 @@ LokiMQ::LokiMQ(
std::string privkey_, std::string privkey_,
bool service_node, bool service_node,
SNRemoteAddress lookup, SNRemoteAddress lookup,
Logger logger) Logger logger,
LogLevel level)
: object_id{next_id++}, pubkey{std::move(pubkey_)}, privkey{std::move(privkey_)}, local_service_node{service_node}, : object_id{next_id++}, pubkey{std::move(pubkey_)}, privkey{std::move(privkey_)}, local_service_node{service_node},
sn_lookup{std::move(lookup)}, logger{std::move(logger)} sn_lookup{std::move(lookup)}, log_lvl{level}, logger{std::move(logger)}
{ {
LMQ_TRACE("Constructing listening LokiMQ, id=", object_id, ", this=", this); LMQ_TRACE("Constructing listening LokiMQ, id=", object_id, ", this=", this);

View File

@ -627,20 +627,26 @@ public:
* *
* @param log a function or callable object that writes a log message. If omitted then all log * @param log a function or callable object that writes a log message. If omitted then all log
* messages are suppressed. * messages are suppressed.
*
* @param level the initial log level; defaults to warn. The log level can be changed later by
* calling log_level(...).
*/ */
LokiMQ( std::string pubkey, LokiMQ( std::string pubkey,
std::string privkey, std::string privkey,
bool service_node, bool service_node,
SNRemoteAddress sn_lookup, SNRemoteAddress sn_lookup,
Logger logger = [](LogLevel, const char*, int, std::string) { }); Logger logger = [](LogLevel, const char*, int, std::string) { },
LogLevel level = LogLevel::warn);
/** /**
* Simplified LokiMQ constructor for a simple listener without any SN connection/authentication * Simplified LokiMQ constructor for a non-listening client or simple listener without any
* capabilities. This treats all remotes as "basic", non-service node connections for command * outgoing SN connection lookup capabilities. The LokiMQ object will not be able to establish
* authentication purposes. * new connections (including reconnections) to service nodes by pubkey.
*/ */
explicit LokiMQ(Logger logger = [](LogLevel, const char*, int, std::string) { }) explicit LokiMQ(
: LokiMQ("", "", false, [](auto) { return ""s; /*no peer lookups*/ }, std::move(logger)) {} Logger logger = [](LogLevel, const char*, int, std::string) { },
LogLevel level = LogLevel::warn)
: LokiMQ("", "", false, [](auto) { return ""s; /*no peer lookups*/ }, std::move(logger), level) {}
/** /**
* Destructor; instructs the proxy to quit. The proxy tells all workers to quit, waits for them * Destructor; instructs the proxy to quit. The proxy tells all workers to quit, waits for them