Logging
connection::async_run
is a complex algorithm, with features like built-in reconnection.
This can make configuration problems, like a misconfigured hostname, difficult to debug -
Boost.Redis will keep retrying to connect to the same hostname over and over.
For this reason, Boost.Redis incorporates a lightweight logging solution, and
will log some status messages to stderr by default.
Logging can be customized by passing a
logger object to the connection’s constructor. For example, logging can be disabled by writing:
asio::io_context ioc;
connection conn {ioc, logger{logger::level::disabled}};
Every message logged by the library is attached a
syslog-like severity
tag (a logger::level).
You can filter messages by severity by creating a logger with a specific level:
asio::io_context ioc;
// Logs to stderr messages with severity >= level::error.
// This will hide all informational output.
connection conn {ioc, logger{logger::level::error}};
The logger constructor accepts a std::function<void(logger::level, std::string_view)>
as second argument. If supplied, Boost.Redis will call this function when logging
instead of printing to stderr. This can be used to integrate third-party logging
libraries. See our spdlog integration example
for sample code.