1.日志级别

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

ROS_DEBUG_STREAM、ROS_INFO_STREAM、ROS_WARN_STREAM、ROS_ERROR_STREAM、ROS_FATAL_STREAM(按照严重程序级别排序,低到高)

C++代码:

#include <ros/ros.h>

int main(int argc, char** argv){

ros::init(argc, argv, "hello_ros");

ros::NodeHandle nh;

ROS_DEBUG_STREAM("Log DEBUG");

ROS_INFO_STREAM("Log INFO");

ROS_WARN_STREAM("Log WARN");

ROS_ERROR_STREAM("Log ERROR");

ROS_FATAL_STREAM("Log FATAL");

}

编译运行:

pim_server@pim-Precision-T1700:~/ROS/Project$ rosrun hello hello_node

[ INFO] [1476881348.684803138]: Log INFO

[ WARN] [1476881348.684843112]: Log WARN

[ERROR] [1476881348.684852220]: Log ERROR

[FATAL] [1476881348.684876076]: Log FATAL

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


2.循环单次日志

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

C++代码:

#include <ros/ros.h>

int main(int argc, char** argv){

ros::init(argc, argv, "hello_ros");

ros::NodeHandle nh;

for(int i = 0; i < 10; i++){

ROS_INFO_STREAM_ONCE("Log info  i = " << i);

if(i >= 2){

ROS_INFO_STREAM_ONCE("Log info  i = " << i);

}

}

}

终端运行:


3.频率日志

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


4.打开、关闭日志

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

rosservice call /node-name/set_logger_level ros.package-name level

C++代码:

#include <ros/ros.h>

int main(int argc, char** argv){

ros::init(argc, argv, "hello_ros");

ros::NodeHandle nh;

while(ros::ok()){

ROS_DEBUG_STREAM("Log DEBUG");

ROS_INFO_STREAM("Log INFO");

ROS_WARN_STREAM("Log WARN");

ROS_ERROR_STREAM("Log ERROR");

ROS_FATAL_STREAM("Log FATAL");

}

}

启动上面节点,然后终端运行

rosservice call /hello_ros/set_logger_level ros.hello DEBUG

终端打印如下,久违的DEBUG!

参考链接:https://www.jianshu.com/p/b360728ad6d1

ROS - 日志的更多相关文章

  1. ROS 日志消息(C++)

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

  2. ROS中的日志(log)消息

    学会使用日志(log)系统,做ROS大型项目的主治医生 通过显示进程的运行状态是好的习惯,但需要确定这样做不会影响到软件的运行效率和输出的清晰度.ROS 日志 (log) 系统的功能就是让进程生成一些 ...

  3. SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  4. ROS——rqt

    $ rosrun rqt_plot rqt_plot   # 画出发布在topic上的数据变化图 $ rosrun rqt_graph rqt_graph #画出node关系图 $ rosrun rq ...

  5. Ros学习调试——rqt_console

    1.rqt_console rqt_console:ROS日志框架(logging framework)的一部分,用来显示节点的输出信息 rqt_logger_level:允许我们修改节点运行时输出信 ...

  6. ROS学习笔记九:ROS工具

    ROS有各种工具可以帮助用户使用ROS.应该指出,这些GUI工具是对输入型命令工具的补充.如果包括ROS用户个人发布的工具,那么ROS工具的数量很庞大.其中,本文讨论的工具是对于ROS编程非常有用的辅 ...

  7. ROS 的一些常用命令行功能

    1.安装并添加源sudo gedit /etc/apt/sources.list更新下sudo apt-get update添加 sources.list,如sudo sh -c '. /etc/ls ...

  8. ROS参数服务器(Parameter Server)

    操作演示,对参数服务器的理解:点击打开链接 rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据.参数服务器能够存储整型.浮点.布尔.字符串.字典和列表 ...

  9. ros基础知识总结

    参考于:ros官网教程 实验楼:ros机器人操作系统自主学习实验 基础知识 1 一个catkin程序包由什么组成? 一个程序包要想称为catkin程序包必须符合以下要求: 该程序包必须包含catkin ...

随机推荐

  1. OC学习篇之---谓词(NSPredicate)

    在前一篇文章中我们介绍了OC中一个重要技术通知:http://blog.csdn.net/jiangwei0910410003/article/details/41923401,今天我们在来看一下OC ...

  2. Windows最值得安装的小众软件

    用电脑这么久,也琢磨出自己的一些使用心得.今天和大家分享几个Windows效率工具.数量不多,但每个都是精品. ▌软件下载-卫星公众好「悦享软件」,在后台会话框中回复关键字:h108 1.Ditto ...

  3. PostgreSQL9.6的新特性并行查询

    PostgreSQL在2016年9月发布了9.6版本,在该版本中新增了并行计算功能,目前PG支持的并行查询主要是顺序扫描(Sequencial Scans),并且支持部分链接查询(join)和聚合(a ...

  4. SpringBoot之Spring@Value属性注入使用详解

    在使用Spring框架的项目中,@Value是使用比较频繁的注解之一,它的作用是将配置文件中key对应的值赋值给它标注的属性.在日常使用中我们常用的功能都比较简单,本篇文章系统的带大家来了解一下@Va ...

  5. Openstack组件实现原理 — Keystone认证功能

    目录 目录 前言 Keystone安装列表 Keystone架构 Keystone的管理对象 一个理解Keystone管理对象功能的例子 Keystone管理对象之间的关系 Keystone V3的新 ...

  6. log4j日志格式化

    Apache log4j 提供了各种布局对象,每一个对象都可以根据各种布局格式记录数据.另外,也可以创建一个布局对象格式化测井数据中的特定应用的方法. 所有的布局对象 - Appender对象收到 L ...

  7. Spring import配置文件使用占位符

    import使用占位符 连接池切换导入配置的代码: <import resource="classpath:META-INF/spring/spring-${db.connection ...

  8. 深浅拷贝, for循环小知识点 str操作 list的删除问题,类型转换

    深浅拷⻉  : lst1 = ["⾦⽑狮王", "紫衫⻰王", "⽩眉鹰王", "⻘翼蝠王"] lst2 = lst1 ...

  9. spark复习总结02

    1.spark执行原理图 spark程序启动后创建sparkContext作为程序的入口,sparkContext可以与不同类的集群资源管理器(Cluster Manager)进行通信,从而获得程序运 ...

  10. DDCTF 北京地铁

    这周打了ddctf,被打成了dd 北京地铁题目给了一张北京地铁图,提示如下:Color Threshold 提示:AES ECB密钥为小写字母提示2:密钥不足位用\0补全提示3:不要光记得隐写不看图片 ...