From 787de6ebf1a8748cd36802f8c1e6a41fc0f85fed Mon Sep 17 00:00:00 2001 From: dhood Date: Mon, 26 Feb 2018 14:36:10 -0800 Subject: [PATCH] Get node's logger name from rcl (#433) * Get logger name from rcl [direct] * Get logger name from rcl [indirect] * Update tests * fixup on variable usage * Move get_logger_name to NodeLogging interface --- .../rclcpp/node_interfaces/node_logging.hpp | 5 +++++ .../node_interfaces/node_logging_interface.hpp | 7 +++++++ .../src/rclcpp/node_interfaces/node_logging.cpp | 9 +++++++-- rclcpp/test/test_node.cpp | 15 +++++++++++++-- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/rclcpp/include/rclcpp/node_interfaces/node_logging.hpp b/rclcpp/include/rclcpp/node_interfaces/node_logging.hpp index 0cffed1..9694bf3 100644 --- a/rclcpp/include/rclcpp/node_interfaces/node_logging.hpp +++ b/rclcpp/include/rclcpp/node_interfaces/node_logging.hpp @@ -46,6 +46,11 @@ public: 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 c549ca2..16790db 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 @@ public: 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 bba4d49..269f14d 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 2346250..656c35b 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()); } }