_setupLogger(config) {
    let log = '';

    if ('log' in config) {
      if (isWinstonLogger(config.log)) {
        log = config.log;
      } else if (isString(config.log) && ['info', 'verbose', 'debug'].includes(config.log)) {
        log = config.log;
      } else if (config.log) {
        log = 'info';
      }
    }

    if (isWinstonLogger(log)) {
      return log;
    }

    return winston.createLogger({
      transports: [new winston.transports.Console({
        level: log || 'info',
        silent: !log.length,
        format: winston.format.combine(
          winston.format.colorize(),
          winston.format.timestamp({
            format: 'YYYY-MM-DD HH:MM:ss.SSS'
          }),
          winston.format.splat(),
          winston.format.printf(info => `${info.timestamp} - ${info.level}: ${info.message}`)
        )
      })]
    });
  }
Set up logger

@param {object} config                 Configuration object
@returns {object} Winston logger