Log refactored to be more SOLID

Allows injection of a different ILogger