Regarding using spdlog, here are the assumptions: 1. There will be only one global SGIO object for logging. 2. Two streams are used: stdout (for all log levels except for MSG_ERROR) and stderr, and the user can direct any of them. 3. spdlog will be exposed. That is the user will use spdlog sinks to redirect streams. I don't see a reason to wrap around them or add options to manipulate them further. Exposing spdlog is more flexible. So we can use "dist_sink" for example to redirect to multiple sinks.
Some questions: 1. Are these assumptions reasonable? 2. Should we use fmtlib? I currently format using sprintf, but fmtlib is supposedly similar in runtime speed, and adds a little overhead in compile time (header library with compile time format checking!). The downside (for us) is that it uses python-like formatting. 3. Should we get rid of macros?