func outputFile(kv *consulapi.KV, path, prefix string) { vs, _, err := kv.List(prefix, nil) if err != nil { if consulapi.IsServerError(err) && outRetries < 10 { log.Println("consul server err: retry after 1s") <-time.After(time.Second) outRetries++ outputFile(kv, path, prefix) return } log.Fatal(err.Error()) } f, err := os.Create(path) if err != nil { log.Fatal(err.Error()) } defer f.Close() for _, val := range vs { fmt.Fprintf(f, "%s,%s\n", val.Key, val.Value) } f.Sync() }