code: func NewDiscovery(conf SDConfig, logger log.Logger) *Discovery {
  	if logger == nil {
  		logger = log.NewNopLogger()
  	}
  
  	qtype := dns.TypeSRV
  	switch strings.ToUpper(conf.Type) {
  	case "A":
  		qtype = dns.TypeA
  	case "AAAA":
  		qtype = dns.TypeAAAA
  	case "SRV":
  		qtype = dns.TypeSRV
  	}
  	d := &Discovery{
  		names:    conf.Names,
  		qtype:    qtype,
  		port:     conf.Port,
  		logger:   logger,
  		lookupFn: lookupWithSearchPath,
  	}
  	d.Discovery = refresh.NewDiscovery(
  		logger,
  		"dns",
  		time.Duration(conf.RefreshInterval),
  		d.refresh,
  	)
  	return d
  }
docs: // NewDiscovery returns a new Discovery which periodically refreshes its targets.