client_golang
client_golang copied to clipboard
graphite: refactor error handling
Removed Logger interface and make error handling more flexible.
For example, we could use our own logger implementation and have more control over the execution flow
package main
import (
"context"
"time"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/graphite"
"go.uber.org/zap"
)
func main() {
logger, _ := zap.NewProduction()
defer logger.Sync()
ctx := context.Background()
ctx, cancel := context.WithCancel(ctx)
defer cancel()
c := &Config{
URL: "graphite.example.org:3099",
Gatherer: prometheus.DefaultGatherer,
Prefix: "prefix",
Interval: 5 * time.Second,
Timeout: 2 * time.Second,
ErrorHandling: testCase.errorHandling,
ErrorCallbackFunc: func(err error) { if err != nil { logger.Error("run", zap.Error(err)); cancel() } },
}
b, err := graphite.NewBridge(c)
if err != nil {
t.Fatal(err)
}
b.Run(ctx)
}