code: func New(info logger.Info) (logger.Logger, error) {
  	tag, err := loggerutils.ParseLogTag(info, loggerutils.DefaultTemplate)
  	if err != nil {
  		return nil, err
  	}
  
  	proto, address, err := parseAddress(info.Config["syslog-address"])
  	if err != nil {
  		return nil, err
  	}
  
  	facility, err := parseFacility(info.Config["syslog-facility"])
  	if err != nil {
  		return nil, err
  	}
  
  	syslogFormatter, syslogFramer, err := parseLogFormat(info.Config["syslog-format"], proto)
  	if err != nil {
  		return nil, err
  	}
  
  	var log *syslog.Writer
  	if proto == secureProto {
  		tlsConfig, tlsErr := parseTLSConfig(info.Config)
  		if tlsErr != nil {
  			return nil, tlsErr
  		}
  		log, err = syslog.DialWithTLSConfig(proto, address, facility, tag, tlsConfig)
  	} else {
  		log, err = syslog.Dial(proto, address, facility, tag)
  	}
  
  	if err != nil {
  		return nil, err
  	}
  
  	log.SetFormatter(syslogFormatter)
  	log.SetFramer(syslogFramer)
  
  	return &syslogger{
  		writer: log,
  	}, nil
  }
docs: // New creates a syslog logger using the configuration passed in on
  // the context. Supported context configuration variables are
  // syslog-address, syslog-facility, syslog-format.