UPDATE (08/10/18):
I’ve reworked this based on feedback during the pull process. The basic change to my original proposal was to simplify its use via macros (no implementation knowledge required), and give graduated control of log messages compiled in or out. I’ll update this with more details once pull complete.
Synopsis:
* Supports a "printf" style formatting (fprintf) with a variable number of arguments.
* Simple setup and access to logging via macros (i.e. implementation detail knowledge not required)
* Provides five increasing log levels: LOG_NONE, LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG (or LOG_ALL).
* Customizable header string per macro type.
* Log messages can be compiled away at graduated log levels (reducing sketch size for non-debug compilation)
* All LogSerial functionality is included or compiled away via a single define, USE_LOG_LEVEL, at beginning of sketch.
* Can store formats string in Flash memory (efficient space saving).
* Supports either 250k or 500k (default) baud rate for the Serial Monitor port. (VSCode max is 250k)