zoukankan      html  css  js  c++  java
  • ROS

    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


  • 相关阅读:
    ELK日志管理
    Python笔记——break的注意事项
    linux下mysql集群的安装
    为什么还原innobackupex备份后查看到的Executed_Gtid_Set与xtrabackup_binlog_info不一致
    MySQL备份可能遇到的坑
    利用.frm、.ibd恢复数据
    如何得到Slave应用relay-log的时间
    mysql.user细节三问
    跳过复制错误——slave_skip_errors、slave_exec_mode
    跳过复制错误——sql_slave_skip_counter
  • 原文地址:https://www.cnblogs.com/long5683/p/11779939.html
Copyright © 2011-2022 走看看