3.2.3 为特定节点配置调试信息级别
默认情况下,系统会显示INFO及更高级别的调试信息,并使用ROS默认级别来过滤特定节点输出的信息。要实现这一功能有很多方法。其中有些是在编译时设定,而其他的可以在执行前使用配置文件进行更改。另外,也可以动态地改变级别。下面将介绍使用rqt_console和rqt_logger_level来实现这一功能。
在编译源代码时可以设置日志级别,但不推荐这么做,这需要我们修改源代码定制日志级别,如果你想这样做,请参考《ROS机器人程序设计》(第1版)。
然而,在一些时候,我们需要删除低于设定级别的日志。这时,我们希望看到那些消息后,将它们删除而不是禁用。为此需要将ROSCONSOLE_MIN_SEVERITY设置为期望的最低严重级别或者避免任何消息(甚至是FATAL)。宏如下:
ROSCONSOLE_MIN_SEVERITY宏在<ros/console.h>中默认定义为DEBUG级别。于是可将它作为一个编译参数(使用-D)传递或把它放在头文件前。例如,若想仅显示ERROR或更高级别的调试信息,在源代码中加入下面代码:
或者,在CMakeLists.txt中使用下面代码设置包中所有节点的宏:
除此之外,还有一个更灵活的方法就是在配置文件中设置最低日志级别。用文件创建一个名为的config文件夹和名为chapter3_tutorials.config的文件,文件内容如下(从它设置为DEBUG级别开始编辑给定文件):
然后,我们设置ROSCONSOLE_CONFIG_FILE环境变量指向我们的文件。我们可以使用一个启动(launch)文件来替代配置环境变量,但这样做会直接运行节点。因此,我们可以通过env(环境变量)字段扩展launch文件,如下所示:
如上所述,环境变量会找到之前显示的配置文件,其中包含每个已命名日志的日志级别说明。在这个例子中是功能包名称。