use_logger_service

This file is ai generated. Do not edit this file directly. Instead, edit the node source code and run the generate-node-docs command to update this file.

Description

A ROS2 demonstration showing how to enable and control logger levels dynamically using logger services. The demo includes two nodes: LoggerServiceNode which has the logger service enabled, and TestNode which remotely changes the logger level and sends test messages. This demonstrates runtime control of log verbosity without restarting nodes.

Publishers

  • Topic: /output

    • Type: example_interfaces/msg/String

    • QoS: Queue size of 10

    • Description: TestNode publishes test messages to this topic

Subscribers

  • Topic: /output

    • Type: example_interfaces/msg/String

    • QoS: Queue size of 10

    • Description: LoggerServiceNode subscribes and logs messages at different levels

Services

  • Service Server: /LoggerServiceNode/get_logger_levels

    • Type: rcl_interfaces/srv/GetLoggerLevels

    • Description: Returns current logger level configuration

  • Service Server: /LoggerServiceNode/set_logger_levels

    • Type: rcl_interfaces/srv/SetLoggerLevels

    • Description: Sets logger level for the node

Example Usage

# Run the complete demo
ros2 run demo_nodes_py use_logger_service

The demo will automatically:

  1. Output messages with default logger level (INFO)

  2. Get current logger level (Unset/0)

  3. Set to DEBUG level and output test message

  4. Get logger level (DEBUG/10)

  5. Set to WARN level and output test message

  6. Get logger level (WARN/30)

  7. Set to ERROR level and output test message

  8. Get logger level (ERROR/40)

Expected output:

[INFO] [TestNode]: Output with default logger level:
[INFO] [LoggerServiceNode]: Output 1 with INFO logger level.
[WARN] [LoggerServiceNode]: Output 1 with WARN logger level.
[ERROR] [LoggerServiceNode]: Output 1 with ERROR logger level.
[INFO] [TestNode]: Current logger level: 0
[INFO] [TestNode]: Output with debug logger level:
[DEBUG] [LoggerServiceNode]: Output 2 with DEBUG logger level.
[INFO] [LoggerServiceNode]: Output 2 with INFO logger level.
...

To manually control logger level:

# Terminal 1: Run a node with logger service enabled
# (use a modified version or another node)

# Terminal 2: Get current logger level
ros2 service call /LoggerServiceNode/get_logger_levels \
    rcl_interfaces/srv/GetLoggerLevels "{names: ['LoggerServiceNode']}"

# Terminal 3: Set logger level to DEBUG
ros2 service call /LoggerServiceNode/set_logger_levels \
    rcl_interfaces/srv/SetLoggerLevels \
    "{levels: [{name: 'LoggerServiceNode', level: 10}]}"