15 #include "rclcpp/node_impl.hpp"
16 #include "rclcpp/node_interfaces/node_logging.hpp"
17 #include "rclcpp/node_interfaces/node_services_interface.hpp"
21 NodeLogging::NodeLogging(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base)
22 : node_base_(node_base)
27 NodeLogging::~NodeLogging()
44 node_interfaces::NodeServicesInterface::SharedPtr node_services)
47 const std::string node_name = node_base_->get_name();
48 auto callback_group = node_base_->get_default_callback_group();
50 get_loggers_service_ = rclcpp::create_service<rcl_interfaces::srv::GetLoggerLevels>(
51 node_base_, node_services,
52 node_name +
"/get_logger_levels",
54 const std::shared_ptr<rmw_request_id_t>,
55 const std::shared_ptr<rcl_interfaces::srv::GetLoggerLevels::Request> request,
56 std::shared_ptr<rcl_interfaces::srv::GetLoggerLevels::Response> response)
58 for (
auto & name : request->names) {
59 rcl_interfaces::msg::LoggerLevel logger_level;
60 logger_level.name = name;
61 auto ret = rcutils_logging_get_logger_level(name.c_str());
63 logger_level.level = 0;
65 logger_level.level = static_cast<uint8_t>(ret);
67 response->levels.push_back(std::move(logger_level));
70 qos_profile, callback_group);
72 set_loggers_service_ = rclcpp::create_service<rcl_interfaces::srv::SetLoggerLevels>(
73 node_base_, node_services,
74 node_name +
"/set_logger_levels",
76 const std::shared_ptr<rmw_request_id_t>,
77 const std::shared_ptr<rcl_interfaces::srv::SetLoggerLevels::Request> request,
78 std::shared_ptr<rcl_interfaces::srv::SetLoggerLevels::Response> response)
80 rcl_interfaces::msg::SetLoggerLevelsResult result;
81 for (
auto & level : request->levels) {
82 auto ret = rcutils_logging_set_logger_level(level.name.c_str(), level.level);
83 if (ret != RCUTILS_RET_OK) {
84 result.successful = false;
85 result.reason = rcutils_get_error_string().str;
87 result.successful = true;
89 response->results.push_back(std::move(result));
92 qos_profile, callback_group);
Implementation of the NodeLogging part of the Node API.
RCLCPP_PUBLIC const char * get_logger_name() const override
Return the logger name associated with the node.
RCLCPP_PUBLIC void create_logger_services(node_interfaces::NodeServicesInterface::SharedPtr node_services) override
create logger services
RCLCPP_PUBLIC rclcpp::Logger get_logger() const override
Return the logger of the node.
RCLCPP_PUBLIC Logger get_logger(const std::string &name)
Return a named logger.
RCL_PUBLIC RCL_WARN_UNUSED const char * rcl_node_get_logger_name(const rcl_node_t *node)
Return the logger name of the node.