12#include <boost/log/attributes/clock.hpp>
13#include <boost/log/expressions/keyword.hpp>
14#include <boost/log/sinks/sync_frontend.hpp>
15#include <boost/log/sinks/text_ostream_backend.hpp>
16#include <boost/log/sources/severity_channel_logger.hpp>
17#include <boost/log/utility/manipulators/add_value.hpp>
18#include <boost/utility/string_view.hpp>
41log_level level_from_string(std::string level);
43std::ostream& operator<<(std::ostream&,
log_level);
50using LogSource = boost::log::sources::severity_channel_logger_mt<log_level>;
67 bool operator()(
const boost::log::attribute_value_set&)
const;
116 void disable_console_logging();
119 boost::shared_ptr<boost::log::sinks::synchronous_sink<boost::log::sinks::text_ostream_backend>>
122 log_level global_level_{log_level::info};
124 std::map<std::string, log_level> resource_levels_;
127namespace log_detail {
131boost::string_view trim_filename(
const char* file);
135BOOST_LOG_ATTRIBUTE_KEYWORD_TYPE(attr_channel,
"Channel", std::string);
137BOOST_LOG_ATTRIBUTE_KEYWORD_TYPE(attr_file,
"file", boost::string_view);
138BOOST_LOG_ATTRIBUTE_KEYWORD_TYPE(attr_line,
"line",
unsigned int);
139BOOST_LOG_ATTRIBUTE_KEYWORD_TYPE(attr_time,
141 boost::log::attributes::local_clock::value_type);
143#define VIAM_SDK_LOG_IMPL(lg, level) \
144 BOOST_LOG_SEV((lg), ::viam::sdk::log_level::level) \
145 << ::boost::log::add_value(::viam::sdk::attr_file_type{}, \
146 ::viam::sdk::log_detail::trim_filename(__FILE__)) \
147 << ::boost::log::add_value(::viam::sdk::attr_line_type{}, __LINE__)
153#define VIAM_SDK_LOG(level) VIAM_SDK_LOG_IMPL(::viam::sdk::LogManager::get().global_logger(), level)
161#define VIAM_RESOURCE_LOG(level) VIAM_SDK_LOG_IMPL(this->logger_, level)
Instance management for Viam C++ SDK applications. This is a single instance class which is responsib...
Definition instance.hpp:13
Manages the logging infrastructure in the SDDK.
Definition logging.hpp:62
static LogManager & get()
Returns the unique logger instance.
void set_global_log_level(log_level)
Set the global logger severity.
void set_resource_log_level(const std::string &resource, log_level)
Set the logger severity for a resource.
LogSource & global_logger()
Return the SDK global log source.
void set_global_log_level(int argc, char **argv)
Set the global logger severity from a command line argument vector.
void set_global_resource_name(const std::string &name)
Override the channel name of general log messages not originating from resources.
gRPC client for a robot, to be used for all interactions with a robot. There are two ways to instanti...
Definition client.hpp:39
log_level
Severity levels for the logger.
Definition logging.hpp:30
boost::log::sources::severity_channel_logger_mt< log_level > LogSource
Type alias for the log source in the C++ SDK.
Definition logging.hpp:50
const char * global_resource_name()
Returns the "channel name" of general log messages not originating from resources.
Definition logging.hpp:64