This is an updated fork of this gist.
Logging functionality that supports:
- If a log message should be printed is determined at comptime, meaning zero overhead for unprinted messages (so just leave the code peppered with debug logs, but when it makes sense scope them; so downstream users can filter them out)
- Scoped log messages
- Different log levels per scope
- Overrideable log output (write to file, database, etc.)