目录
概述
严重程度
API 接口
配置
环境变量
节点创建
日志子系统设计
rcutils
rcl_logging_spdlog
rcl
rclcpp
rclpy
记录使用情况
概述
ROS 2 中的日志子系统旨在将日志消息传递到各种目标,包括:
到控制台(如果已连接)
将文件记录到磁盘(如果本地存储可用)
到 ROS 2 网络上的
/rosout
主题
默认情况下,ROS 2 节点中的日志消息将输出到控制台(在 stderr 上)、磁盘上的日志文件以及 ROS 2 网络上的 /rosout
主题。所有目标都可以在每个节点的基础上单独启用或禁用。
本文档的其余部分将介绍日志子系统背后的一些想法。
严重级别
日志消息具有与之关联的严重性级别: DEBUG
、 INFO
、 WARN
、 ERROR
或 FATAL
,按升序排列。
记录器将只处理严重性等于或高于为记录器选择的指定级别的日志消息。
每个节点都有一个与之关联的记录器,该记录器会自动包含节点的名称和命名空间。如果节点的名称被外部重新映射为源代码中定义的名称以外的其他名称,则会反映在记录器名称中。还可以创建使用特定名称的非节点记录器。
记录器名称表示一个层次结构。如果名为“abc.def”的记录器的级别未设置,它将推迟到其父级“abc”的级别,如果该级别也未设置,将使用默认记录器级别。当更改记录器“abc”的级别时,所有后代(例如“abc.def”,“abc.ghi.jkl”)的级别将受到影响,除非它们的级别已被明确设置。
API 接口
这些是 ROS 2 日志基础设施的最终用户应该使用的 API,按客户端库分开。
C++:
RCLCPP_{DEBUG,INFO,WARN,ERROR,FATAL}
- 每次命中此行时输出给定的 printf 样式消息RCLCPP_{DEBUG,INFO,WARN,ERROR,FATAL}_ONCE
- 仅在第一次命中此行时输出给定的 printf 样式消息RCLCPP_{DEBUG,INFO,WARN,ERROR,FATAL}_EXPRESSION
- 仅在给定表达式为真时输出给定的 printf 样式消息RCLCPP_{DEBUG,INFO,WARN,ERROR,FATAL}_FUNCTION
- 仅当给定函数返回 true 时才输出给定的 printf 样式消息RCLCPP_{DEBUG,INFO,WARN,ERROR,FATAL}_SKIPFIRST
- 输出给定的 printf 样式消息,除了第一次命中此行以外的所有时间RCLCPP_{DEBUG,INFO,WARN,ERROR,FATAL}_THROTTLE
- 以整数毫秒为单位输出给定的 printf 样式