Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Give nodes a logger #148

Merged
merged 4 commits into from
Nov 22, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions rclpy/rclpy/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from rclpy.expand_topic_name import expand_topic_name
from rclpy.guard_condition import GuardCondition
from rclpy.impl.implementation_singleton import rclpy_implementation as _rclpy
from rclpy.logging import get_named_logger
from rclpy.publisher import Publisher
from rclpy.qos import qos_profile_default, qos_profile_services_default
from rclpy.service import Service
Expand Down Expand Up @@ -52,6 +53,8 @@ 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_named_logger(node_name)
self.publishers = []
self.subscriptions = []
self.clients = []
Expand Down Expand Up @@ -91,6 +94,9 @@ def get_name(self):
def get_namespace(self):
return _rclpy.rclpy_get_node_namespace(self.handle)

def get_logger(self):
return self._logger

def _validate_topic_or_service_name(self, topic_or_service_name, *, is_service=False):
name = self.get_name()
namespace = self.get_namespace()
Expand Down
6 changes: 6 additions & 0 deletions rclpy/test/test_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,12 @@ def test_node_names(self):
# test that it doesn't raise
self.node.get_node_names()

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


if __name__ == '__main__':
unittest.main()
3 changes: 3 additions & 0 deletions rclpy/test/test_validate_node_name.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ def test_validate_node_name_failures(self):
# node name must not be empty
with self.assertRaisesRegex(InvalidNodeNameException, 'must not be empty'):
validate_node_name('')
# node name may not contain '.'
with self.assertRaisesRegex(InvalidNodeNameException, 'must not contain characters'):
validate_node_name('invalid_node.')
# node name may not contain '?'
with self.assertRaisesRegex(InvalidNodeNameException, 'must not contain characters'):
validate_node_name('invalid_node?')
Expand Down