In programming, and even more in embedded project, it is essential to understand what happens in your code and why it does not work as expected. But logging mechanism are sadly almost always underestimated. The leak of logs is really a brake when debugging programs or postmortems issues analysis even in big companies.
Even when developing, it is a great comfort to have interesting information about the current state of the running application.
This is why, for me, a logging system has to be global to all modules in the application, in order to be filtered, processed (even by automatic programs).
A basic Logger would have at least different log levels and context and the possibility to select which log have to be logged/displayed.
For example, the widely used logging system DLT exists for automotive environments.
You may also have a look to plotly
Features of ArduLogger:
low ram usage
several logs level embedded in the target
log level selection on the host
really simple frame 19s structure
Text message logging
Creating real time curves from analog logged values
replay of a saved logging session
Qt front-end multiplatform (linux/windows as it uses the QTSerialPort library)
log filtering with regular expressions QRegexp
Client can be reused for other project than arduino (you only need to respect the frame 19s structure)
Raw logging into a file and STDOUT