From 7ee6285702c6bd6772fc3e63dbb19c252138b07a Mon Sep 17 00:00:00 2001 From: Peng Wang Date: Fri, 20 Mar 2026 07:32:14 +0000 Subject: [PATCH] add "--log-level" option for "ros2 component load" Signed-off-by: Peng Wang --- ros2component/ros2component/api/__init__.py | 22 +++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/ros2component/ros2component/api/__init__.py b/ros2component/ros2component/api/__init__.py index 7e1f50a6f..1ff920778 100644 --- a/ros2component/ros2component/api/__init__.py +++ b/ros2component/ros2component/api/__init__.py @@ -34,6 +34,15 @@ COMPONENTS_RESOURCE_TYPE = 'rclcpp_components' +_LOG_LEVEL_MAP = { + 'debug': rcl_interfaces.msg.LoggerLevel.LOG_LEVEL_DEBUG, + 'info': rcl_interfaces.msg.LoggerLevel.LOG_LEVEL_INFO, + 'warn': rcl_interfaces.msg.LoggerLevel.LOG_LEVEL_WARN, + 'warning': rcl_interfaces.msg.LoggerLevel.LOG_LEVEL_WARN, + 'error': rcl_interfaces.msg.LoggerLevel.LOG_LEVEL_ERROR, + 'fatal': rcl_interfaces.msg.LoggerLevel.LOG_LEVEL_FATAL, +} + def get_package_names_with_component_types(): """Get the names of all packages that register component types in the ament index.""" @@ -230,7 +239,12 @@ def load_component_into_container( if node_namespace is not None: request.node_namespace = node_namespace if log_level is not None: - request.log_level = log_level + if log_level not in _LOG_LEVEL_MAP: + raise RuntimeError( + f"Invalid log level '{log_level}'. " + 'Valid values are: debug, info, warn, error, fatal' + ) + request.log_level = _LOG_LEVEL_MAP[log_level] if remap_rules is not None: request.remap_rules = remap_rules if parameters is not None: @@ -366,7 +380,11 @@ def add_component_arguments(parser): argument.completer = ComponentTypeNameCompleter(package_name_key='package_name') parser.add_argument('-n', '--node-name', help='Component node name') parser.add_argument('--node-namespace', help='Component node namespace') - parser.add_argument('--log-level', help='Component node log level') + parser.add_argument( + '--log-level', type=str.lower, + choices=['debug', 'info', 'warn', 'warning', 'error', 'fatal'], + help='Component node log level (debug, info, warn, error, fatal)' + ) parser.add_argument( '-r', '--remap-rule', action='append', dest='remap_rules', help="Component node remapping rules, in the 'from:=to' form"