1.概述
目前支持的日志记录功能是:html
rclcpp
和rclpy
)使用通用日志记录库来提供:
2.日志记录器概念
日志消息与他们相关联的严重性级别:DEBUG
,INFO
,WARN
,ERROR
或者FATAL
,按升序排列。node
记录器仅处理严重性等于或高于为其选择的指定级别的日志消息。git
每一个节点(在rclcpp
和rclpy中
)都有一个与之关联的记录器,它自动包含节点的名称和命名空间。若是节点的名称从外部从新映射到源代码中定义的名称之外的其余名称,则它将反映在记录器名称中。还能够建立使用特定名称的非节点记录器。github
记录器名称表示层次结构。若是未设置名为“abc.def”的记录器的级别,它将推迟到其名为“abc”的父级别,若是该级别也未设置,则将使用默认记录器级别。当记录器“abc”的级别改变时,将对其全部派生文件(例如“abc.def”,“abc.ghi.jkl”)的级别产生影响,除非已明确设置了派生文件的级别。编程
3.日志用法
在C ++中:api
在Python中:函数
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文档。因为rclpy
和rclcpp
都使用rcutils来
记录日志,这将影响全部的Python和C ++节点。