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

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

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

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

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

每个节点(在rclcpprclpy中)都有一个与之关联的记录器,它自动包含节点的名称和命名空间。如果节点的名称从外部重新映射到源代码中定义的名称以外的其他名称,则它将反映在记录器名称中。还可以创建使用特定名称的非节点记录器。

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

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

在Python中:

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

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

ros2 run demo_nodes_cpp listener __log_level:=debug

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

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

 

posted on 2019-03-01 13:08  tuxinbang  阅读(1033)  评论(0编辑  收藏  举报

导航