Skip to content

Commit

Permalink
Get node's logger name from rcl (#174)
Browse files Browse the repository at this point in the history
* Get node's logger name from rcl

* Update test

* remove empty line
  • Loading branch information
dhood authored Feb 26, 2018
1 parent fbd80a2 commit f3e52d9
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 4 deletions.
3 changes: 1 addition & 2 deletions rclpy/rclpy/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,6 @@ class Node:

def __init__(self, node_name, *, namespace=None):
self._handle = None
# TODO(dhood): get logger name from rcl, use namespace (with slashes converted)
self._logger = get_logger(node_name)
self.publishers = []
self.subscriptions = []
self.clients = []
Expand All @@ -79,6 +77,7 @@ def __init__(self, node_name, *, namespace=None):
validate_namespace(namespace)
# Should not get to this point
raise RuntimeError('rclpy_create_node failed for unknown reason')
self._logger = get_logger(_rclpy.rclpy_get_node_logger_name(self.handle))

@property
def handle(self):
Expand Down
35 changes: 34 additions & 1 deletion rclpy/src/rclpy/_rclpy.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,35 @@ rclpy_get_node_namespace(PyObject * Py_UNUSED(self), PyObject * args)
return PyUnicode_FromString(node_namespace);
}

/// Get the name of the logger associated with a node.
/**
* Raises ValueError if pynode is not a node capsule
*
* \param[in] pynode Capsule pointing to the node to get the logger name of
* \return logger_name, or
* \return None on failure
*/
static PyObject *
rclpy_get_node_logger_name(PyObject * Py_UNUSED(self), PyObject * args)
{
PyObject * pynode;
if (!PyArg_ParseTuple(args, "O", &pynode)) {
return NULL;
}

rcl_node_t * node = (rcl_node_t *)PyCapsule_GetPointer(pynode, "rcl_node_t");
if (!node) {
return NULL;
}

const char * node_logger_name = rcl_node_get_logger_name(node);
if (!node_logger_name) {
Py_RETURN_NONE;
}

return PyUnicode_FromString(node_logger_name);
}

/// Validate a topic name and return error message and index of invalidation.
/**
* Does not have to be a fully qualified topic name.
Expand Down Expand Up @@ -2599,7 +2628,11 @@ static PyMethodDef rclpy_methods[] = {
},
{
"rclpy_get_node_namespace", rclpy_get_node_namespace, METH_VARARGS,
"Get the name of a node."
"Get the namespace of a node."
},
{
"rclpy_get_node_logger_name", rclpy_get_node_logger_name, METH_VARARGS,
"Get the logger name associated with a node."
},
{
"rclpy_expand_topic_name", rclpy_expand_topic_name, METH_VARARGS,
Expand Down
2 changes: 1 addition & 1 deletion rclpy/test/test_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def test_node_names(self):

def test_node_logger(self):
node_logger = self.node.get_logger()
self.assertEqual(node_logger.name, 'my_node')
self.assertEqual(node_logger.name, 'my_ns.my_node')
node_logger.set_level(rclpy.logging.LoggingSeverity.INFO)
node_logger.debug('test')

Expand Down

0 comments on commit f3e52d9

Please sign in to comment.