Added a custom logger, using this instead of a third party solution to ensure that it doesn't require configuration at a central point, only receives memory when it's actually used and that it's disabled by default