/** @ingroup tutorials
@defgroup tutorial_datalog Data logging
@brief Logging sensor data to files and playing it back

Two player drivers support data logging and playback: @ref driver_readlog
and @ref driver_writelog.  See the docs for those drivers for details on
usage.

Player log files have a simple text format.  Messages are new-line
separated, and any line beginning with a '#' is ignored.  Every message
line starts with common meta-data:
@code
time host robot interface index type subtype
@endcode

The fields are:
- time (double): Timestamp, in seconds, associated with the message
- host (uint): The 'host' part of the device's Player address
- robot (uint): The 'robot' part of the device's Player address
- interface (string): The 'interf' part of the device's Player address
  (written as a string)
- index (string): The 'index' part of the device's Player address
- type (uint): The type of the message
- subtype (uint): The subtype of the message

Following this common meta-data is the message payload, the format of which
will depend on the interface, type, and subtype.  See the "Modules" section
below for links to interface-specific message formats.

By convention, configuration response messages such as geometry
information are put at the beginning of the logfile.  The @ref
driver_writelog driver will try to get geometry and log it at the
beginning of the file, and the @ref driver_readlog driver will read
in configuration response messages from the file until a data message
is encountered.

*/
