logger ctor no longer throws if the file cannot be made - it sets the logger into a failed state, but still outputs to debug console
require reference rather than pointer to logger, so code isn't littered with redundant nullptr checks
improve exception output in jsonfile