ROS 2 index翻译(六)——日志及其配置

1.概述
目前支持的日志记录功能是:html

  • 客户端库(rclcpprclpy)使用通用日志记录库来提供:
    • 使用各类过滤器记录呼叫。
    • 日志记录器的层次结构。
    • 与自动使用节点名称和命名空间的节点关联的日志记录器。
  • 控制台输出
    • 文件输出和功能,相似于远程消费消息的rosout即将发布。
  • 记录器级别的编程配置
    • 支持默认记录器级别的启动时刻配置; 运行时刻的配置文件和外部配置即将发布。

2.日志记录器概念
日志消息与他们相关联的严重性级别:DEBUGINFOWARNERROR或者FATAL,按升序排列。node

记录器仅处理严重性等于或高于为其选择的指定级别的日志消息。git

每一个节点(在rclcpprclpy中)都有一个与之关联的记录器,它自动包含节点的名称和命名空间。若是节点的名称从外部从新映射到源代码中定义的名称之外的其余名称,则它将反映在记录器名称中。还能够建立使用特定名称的非节点记录器。github

记录器名称表示层次结构。若是未设置名为“abc.def”的记录器的级别,它将推迟到其名为“abc”的父级别,若是该级别也未设置,则将使用默认记录器级别。当记录器“abc”的级别改变时,将对其全部派生文件(例如“abc.def”,“abc.ghi.jkl”)的级别产生影响,除非已明确设置了派生文件的级别。编程

3.日志用法
在C ++中:api

在Python中:函数

  • 有关节点记录器的示例用法,请参阅rclpy示例
  • 有关关键字参数的使用示例,请参阅rclpy测试(例如skip_firstonce)。

4.记录器配置
4.1默认严重性级别的命令行配置
从Bouncy ROS 2版本开始,能够经过下面的命令行配置日志记录器的默认严重性级别,例如(级别字符串不区分大小写):测试

ros2 run demo_nodes_cpp listener __log_level:=debug

这将影响未明确配置指定的严重性级别的全部记录器。即将发布从命令行配置特定记录器。spa

4.2个别日志记录器的可编程配置
记录器配置仍在开发中。目前,能够经过编程方式配置个别记录器的严重性级别,例如:命令行

在C ++中:

rcutils_logging_set_logger_level("logger_name", RCUTILS_LOG_SEVERITY_DEBUG);

在Python中:

logger.set_level(rclpy.logging.LoggingSeverity.DEBUG)
rclpy.logging.set_logger_level('logger_name', rclpy.logging.LoggingSeverity.DEBUG)

日志演示提供手动公开服务示例,使得记录器可从外部配置; 在将来,咱们但愿记录器运行时刻的配置功能可以自动公开。

5.控制台输出配置
默认状况下,控制台输出将被格式化为包括消息严重性,记录器名称和消息。还可使用日志调用的文件名,函数名和行号等信息。可使用RCUTILS_CONSOLE_OUTPUT_FORMAT环境变量配置自定义控制台输出格式:详细信息,请参阅rcutils文档。因为rclpyrclcpp都使用rcutils来记录日志,这将影响全部的Python和C ++节点。

英文原文:https://index.ros.org/doc/ros2/Concepts/Logging/#id1

相关文章
相关标签/搜索