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 ++節點。