Logging messages
It is good practice to include messages that indicate what the program is doing; we must do it without compromising the efficiency of our software and the clarity of its output. In ROS, we have an API which covers both features, built on top of log4cxx
(a port of the well-known log4j
logger library). In brief, we have several levels of messages, which might have a name (named messages) and depend on a condition or even throttle. All of them have a negligible footprint on performance if they are masked by the current verbosity level (even at compile time). They also have full integration with other ROS tools to visualize and filter the messages from all the nodes running.
Outputting logging messages
ROS comes with a great number of functions/macros to output logging messages. It supports different levels, conditions, STL streams, throttling, and other features that we will see in this section. To start with something simple, an information message is printed with this code...