async contextual logging now uses a dedicated background thread
made thread-count be a optional arg