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");

    }

从运行结果来看,你会发现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 = ; i < ; i++){

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

            if(i >= ){

                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

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

ROS 日志消息(C++)的更多相关文章

  1. ROS - 日志

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

  2. .NET Core下的日志(3):如何将日志消息输出到控制台上

    当我们利用LoggerFactory创建一个Logger对象并利用它来实现日志记录,这个过程会产生一个日志消息,日志消息的流向取决于注册到LoggerFactory之上的LoggerProvider. ...

  3. spark读取 kafka nginx网站日志消息 并写入HDFS中(转)

    原文链接:spark读取 kafka nginx网站日志消息 并写入HDFS中 spark 版本为1.0 kafka 版本为0.8 首先来看看kafka的架构图 详细了解请参考官方 我这边有三台机器用 ...

  4. [转]ROS 传感器消息及RVIZ可视化Laserscan和PointCloud

    https://blog.csdn.net/yangziluomu/article/details/79576508 https://answers.ros.org/question/60239/ho ...

  5. logback不输出日志消息,且SLF4J绑定源错误

    我之前的项目已经成功使用过logback作为日志输出,但是今天新项目在使用的时候,不输出日志信息. 最后终于找到问题所在,并成功解决.解决步骤如下: 第一步:检查pom.xml 按照以往惯例,我先检查 ...

  6. Cap+Exceptionless实现日志消息发布订阅异常情况日志处理及Cap DashBoard授权处理

    Dashboard介绍 capOptions.UseDashboard(dashoptions => { dashoptions.AppPath = "applicationpath& ...

  7. ROS:消息发布器和订阅器(c++)

    学习资料主要源自http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29 $ roscd beginner_t ...

  8. Netty中消除开始的日志消息修改日志级别

    我是使用logback作为日志打印,之前使用slf4j,日志打印不出,就干脆换掉了. 1.首先引入依赖 <dependency> <groupId>ch.qos.logback ...

  9. Log4j官方文档翻译(四、如何在java中输出日志消息)

    我们已经创建来配置文件,本章详细的介绍下如何生成调试信息,并把他们转化成文本文件. 基本的例子 下面就是创建的一个基本的例子: log4j.properties的内容为: log = /usr/hom ...

随机推荐

  1. thinkphp 使用函数

    我们往往需要对模板输出变量使用函数,可以使用: 大理石平台支架 {$data.name|md5} 编译后的结果是: <?php echo (md5($data['name'])); ?> ...

  2. dp转图论——cf1070A好题

    dp的状态转移很像一张有向图:每个状态为一个点,每中转移方案是一条有向边 本题要求是求出最小的数,那我们用状态[i,j]表示模i,数位和为j,那么从每个点出发的十条有向边代表[0,9]十个数 从每个状 ...

  3. socket2里面,有些函数带WSA开头,有些不带。请问有何区别?

    WSASocket可以使用WinSock特有功能,比如重叠IO,用dwflags指定.    WSA的A是指api,用于区别spi,因为在spi中还有wspsocket,wspaccept等... 在 ...

  4. 正则表达式r和re

    # coding:utf-8 import re print 'a\ws' print r'a\nb' # r'': 一般用在正则表达式中,称为原始字符串,作用是将Python语法中的反斜杠转义给 取 ...

  5. Java lambda尝鲜

    最近Java 11都出来了,java 8 的很多新特性还没用过,比如接口可以有方法体啦,default默认方法. 当然最大的特性就是支持函数式编程了.Java 8 提供了lambda表达式和方法引用来 ...

  6. Invalid bound statement (not found)之idea打包maven项目问题

    开发的一个maven项目,之前在Eclipse中,maven打包部署完后一切正常,后来转到idea中开发,再用maven打包部署后, 一直报 Invalid bound statement (not ...

  7. linux内核参数sysctl.conf,TCP握手ack,洪水攻击syn,超时关闭wait(转)

    http://www.xshell.net/linux/Linux_sysctl_conf.html 优化Linux内核sysctl.conf参数来提高服务器并发处理能力 Posted by 破冰 o ...

  8. 7_2.springboot2.x启动配置原理_2.运行run方法

    当创建完SpringApplication对象之后运行run方法 public ConfigurableApplicationContext run(String... args) { StopWat ...

  9. 用户管理模块之mysql.user

    不使用-h参数来指定登录host,默认会连接localhost,仅当mysql.user表中有一条对应的localhost访问授权(username@%不对任何主机做限制也不行)时登录才成功,否则登录 ...

  10. Ubuntu 18.04/18.10快速开启Google BBR的方法

    说明:Ubuntu 18.04改变挺大的,内核直接升到了正式版4.15,而BBR内核要求为4.9,也就是说满足了,所以我们不需要换内核就可以很快的开启BBR,这里简单说下方法. 提示:Ubuntu 1 ...