在ROS中设置日志输出的方法。
ROS日志输出
-
需要包含头文件:
#include <ros/console.h>
-
ROS定义了
ROS_*
形式的宏,用于表示不同类型的日志输出:ROS_<verbosity level>[_STREAM][_<other>]
-
日志输出可以在终端中或者
rqt_console
中查看;
日志详细级别
verbosity level | 含义 |
---|---|
DEBUG |
Information that you never need to see if the system is working properly. |
INFO |
Small amounts of information that may be useful to a user. |
WARN |
Information that the user may find alarming, and may affect the output of the application, but is part of the expected working of the system. |
ERROR |
Something serious (but recoverable) has gone wrong. |
FATAL |
Something unrecoverable has happened. |
- 表格中从上到下的详细级别(verbosity level)依次提高,其严重程度也依次提高;
- ROS默认输出
INFO
及以上详细级别的日志; -
可以通过以下五种方式设置日志输出的最低详细级别:
-
修改
${ROS_ROOT}/config/rosconsole.config
文件:log4j.logger.ros=INFO log4j.logger.ros.roscpp.superdebug=WARN
-
使用
rqt_logger_level
的图形化交互界面设置:rosrun rqt_logger_level rqt_logger_level
-
使用
rqt_console
的图形化交互界面设置:rqt_console
-
使用
rosconsole
命令行工具设置:rosconsole get <node> <logger> rosconsole set <node> <logger> <level>
-
使用
rosconsole
功能包的API:// 设置日志输出的最低详细级别为WARN,详细级别>=WARN的日志会被输出 if (ros::console::set_logger_level(ROSCONSOLE_DEFAULT_NAME, ros::console::levels::Warn)) { ros::console::notifyLoggerLevelsChanged(); }
-
日志输出语法
-
在使用
ROS_<verbosity level>
输出日志时,需要使用类似C中printf()
的语法:ROS_INFO("Hello %s", "World");
-
在使用
ROS_<verbosity level>_STREAM
输出日志时,需要使用类似C++中std::iostream
的语法:ROS_INFO_STREAM("Hello " << "World");