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
This commit is contained in:
dhood 2018-02-26 14:36:10 -08:00 committed by GitHub
parent 3786c91deb
commit 787de6ebf1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 4 deletions

View file

@ -46,6 +46,11 @@ public:
rclcpp::Logger rclcpp::Logger
get_logger() const; get_logger() const;
RCLCPP_PUBLIC
virtual
const char *
get_logger_name() const;
private: private:
RCLCPP_DISABLE_COPY(NodeLogging) RCLCPP_DISABLE_COPY(NodeLogging)

View file

@ -39,6 +39,13 @@ public:
virtual virtual
rclcpp::Logger rclcpp::Logger
get_logger() const = 0; 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 } // namespace node_interfaces

View file

@ -19,8 +19,7 @@ using rclcpp::node_interfaces::NodeLogging;
NodeLogging::NodeLogging(rclcpp::node_interfaces::NodeBaseInterface * node_base) NodeLogging::NodeLogging(rclcpp::node_interfaces::NodeBaseInterface * node_base)
: node_base_(node_base) : node_base_(node_base)
{ {
// TODO(dhood): use the namespace (slashes converted to dots) logger_ = rclcpp::get_logger(this->get_logger_name());
logger_ = rclcpp::get_logger(node_base_->get_name());
} }
NodeLogging::~NodeLogging() NodeLogging::~NodeLogging()
@ -32,3 +31,9 @@ NodeLogging::get_logger() const
{ {
return logger_; return logger_;
} }
const char *
NodeLogging::get_logger_name() const
{
return rcl_node_get_logger_name(node_base_->get_rcl_node_handle());
}

View file

@ -75,14 +75,25 @@ TEST_F(TestNode, get_name_and_namespace) {
} }
TEST_F(TestNode, get_logger) { TEST_F(TestNode, get_logger) {
// Currently the namespace is not taken into account with the node logger name
{ {
auto node = std::make_shared<rclcpp::Node>("my_node"); auto node = std::make_shared<rclcpp::Node>("my_node");
EXPECT_STREQ("my_node", node->get_logger().get_name()); EXPECT_STREQ("my_node", node->get_logger().get_name());
} }
{ {
auto node = std::make_shared<rclcpp::Node>("my_node", "/ns"); auto node = std::make_shared<rclcpp::Node>("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<rclcpp::Node>("my_node", "ns");
EXPECT_STREQ("ns.my_node", node->get_logger().get_name());
}
{
auto node = std::make_shared<rclcpp::Node>("my_node", "/my/ns");
EXPECT_STREQ("my.ns.my_node", node->get_logger().get_name());
}
{
auto node = std::make_shared<rclcpp::Node>("my_node", "my/ns");
EXPECT_STREQ("my.ns.my_node", node->get_logger().get_name());
} }
} }