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
get_logger() const;
RCLCPP_PUBLIC
virtual
const char *
get_logger_name() const;
private:
RCLCPP_DISABLE_COPY(NodeLogging)

View file

@ -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

View file

@ -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());
}

View file

@ -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<rclcpp::Node>("my_node");
EXPECT_STREQ("my_node", node->get_logger().get_name());
}
{
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());
}
}