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.
ROS comes with a great number ...