A bit of refactoring: move common methods to abstract implementation
Add standalone direct logger with protocol stub