ROS 日志消息(C++)

1.日志级别

日志消息分为五个不同的严重级别宏,与Android的Log定义的严重级别类似,如下基础宏:

1ROS_DEBUG_STREAMROS_INFO_STREAMROS_WARN_STREAMROS_ERROR_STREAMROS_FATAL_STREAM(按照严重程序级别排序,低到高) 2 3C++代码: 4 5 #include <ros/ros.h> 6 7 int main(int argc, char** argv){ 8 9 ros::init(argc, argv, "hello_ros"); 10 11 ros::NodeHandle nh; 12 13 ROS_DEBUG_STREAM("Log DEBUG"); 14 15 ROS_INFO_STREAM("Log INFO"); 16 17 ROS_WARN_STREAM("Log WARN"); 18 19 ROS_ERROR_STREAM("Log ERROR"); 20 21 ROS_FATAL_STREAM("Log FATAL"); 22 23 }

从运行结果来看,你会发现DEBUG没有打印出来,Why?淡定,4会解答

2.循环单次日志

基础宏后面添加_ONCE,代表日志在循环迭代中只有第一次才会打印日志:

1C++代码: 2 3 #include <ros/ros.h> 4 5 int main(int argc, char** argv){ 6 7 ros::init(argc, argv, "hello_ros"); 8 9 ros::NodeHandle nh; 10 11 for(int i = 0; i < 10; i++){ 12 13 ROS_INFO_STREAM_ONCE("Log info i = " << i); 14 15 if(i >= 2){ 16 17 ROS_INFO_STREAM_ONCE("Log info i = " << i); 18 19 } 20 21 } 22 23 }

**3.频率日志
**

基础宏后面添加_THROTTLE就变为了频率日志,入ROS_INFO_STREAM_THROTTLE(interval, message),第一个参数interval代表以秒为单位的时间量,时间量指的是两个日志出现的最小时间间隔


4.打开、关闭日志

1中提到DEBUG日志信息没有输出,原因是C++程序默认的日志级别为INFO,所有DEBUG日志被忽略掉了,那问题来了,如何打开DEBUG级别日志呢?

1rosservice call /node-name/set_logger_level ros.package-name level 2C++代码: 3#include <ros/ros.h> 4int main(int argc, char** argv){ 5    ros::init(argc, argv, "hello_ros"); 6    ros::NodeHandle nh; 7    while(ros::ok()){ 8        ROS_DEBUG_STREAM("Log DEBUG"); 9        ROS_INFO_STREAM("Log INFO"); 10        ROS_WARN_STREAM("Log WARN"); 11        ROS_ERROR_STREAM("Log ERROR"); 12        ROS_FATAL_STREAM("Log FATAL"); 13    } 14} 15 16 17启动上面节点,然后终端运行rosservice call /hello_ros/set_logger_level ros.hello DEBUG

转自:https://www.jianshu.com/p/b360728ad6d1

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )