Completed a basic log implementation with the following:
- log reference injected alongside config, through construct of p2p or full_node:p2p or server::full_node::p2p and then all other objects that require logging.
- class tracker (base class to log object refcounts) accepts log object and logs checked (debug) builds.
- logger posts each message to its own strand on its own low priority threadpool.
- logger exposes standard subscriber for accepting log messages.
- log handler in bn.exe subscribes to log and emits messages to console.
- message notifications preserve order and with handlers invoked non-concurrently.
- logger can be easily expanded to differentiate category and parameterization, either with multiple subscribers or via filtering within a subscriber.
- Macro invocation both preserves serialization formatting and allows full exclusion at compile time.
(edited)