diff --git a/rclcpp/include/rclcpp/node_interfaces/node_logging.hpp b/rclcpp/include/rclcpp/node_interfaces/node_logging.hpp index 0cffed11d6..9694bf377a 100644 --- a/rclcpp/include/rclcpp/node_interfaces/node_logging.hpp +++ b/rclcpp/include/rclcpp/node_interfaces/node_logging.hpp @@ -46,6 +46,11 @@ class NodeLogging : public NodeLoggingInterface rclcpp::Logger get_logger() const; + RCLCPP_PUBLIC + virtual + const char * + get_logger_name() const; + private: RCLCPP_DISABLE_COPY(NodeLogging) diff --git a/rclcpp/include/rclcpp/node_interfaces/node_logging_interface.hpp b/rclcpp/include/rclcpp/node_interfaces/node_logging_interface.hpp index c549ca28be..16790dbd08 100644 --- a/rclcpp/include/rclcpp/node_interfaces/node_logging_interface.hpp +++ b/rclcpp/include/rclcpp/node_interfaces/node_logging_interface.hpp @@ -39,6 +39,13 @@ class NodeLoggingInterface virtual rclcpp::Logger get_logger() const = 0; + + /// Return the logger name associated with the node. + /** \return The logger name associated with the node. */ + RCLCPP_PUBLIC + virtual + const char * + get_logger_name() const = 0; }; } // namespace node_interfaces diff --git a/rclcpp/src/rclcpp/node_interfaces/node_logging.cpp b/rclcpp/src/rclcpp/node_interfaces/node_logging.cpp index bba4d49cfd..269f14dac1 100644 --- a/rclcpp/src/rclcpp/node_interfaces/node_logging.cpp +++ b/rclcpp/src/rclcpp/node_interfaces/node_logging.cpp @@ -19,8 +19,7 @@ using rclcpp::node_interfaces::NodeLogging; NodeLogging::NodeLogging(rclcpp::node_interfaces::NodeBaseInterface * node_base) : node_base_(node_base) { - // TODO(dhood): use the namespace (slashes converted to dots) - logger_ = rclcpp::get_logger(node_base_->get_name()); + logger_ = rclcpp::get_logger(this->get_logger_name()); } NodeLogging::~NodeLogging() @@ -32,3 +31,9 @@ NodeLogging::get_logger() const { return logger_; } + +const char * +NodeLogging::get_logger_name() const +{ + return rcl_node_get_logger_name(node_base_->get_rcl_node_handle()); +} diff --git a/rclcpp/test/test_node.cpp b/rclcpp/test/test_node.cpp index 8ee9aa77f6..23032b1adc 100644 --- a/rclcpp/test/test_node.cpp +++ b/rclcpp/test/test_node.cpp @@ -75,14 +75,25 @@ TEST_F(TestNode, get_name_and_namespace) { } TEST_F(TestNode, get_logger) { - // Currently the namespace is not taken into account with the node logger name { auto node = std::make_shared("my_node"); EXPECT_STREQ("my_node", node->get_logger().get_name()); } { auto node = std::make_shared("my_node", "/ns"); - EXPECT_STREQ("my_node", node->get_logger().get_name()); + EXPECT_STREQ("ns.my_node", node->get_logger().get_name()); + } + { + auto node = std::make_shared("my_node", "ns"); + EXPECT_STREQ("ns.my_node", node->get_logger().get_name()); + } + { + auto node = std::make_shared("my_node", "/my/ns"); + EXPECT_STREQ("my.ns.my_node", node->get_logger().get_name()); + } + { + auto node = std::make_shared("my_node", "my/ns"); + EXPECT_STREQ("my.ns.my_node", node->get_logger().get_name()); } }