Skip to content

Zapr provides a logr.LogSink implementation using zap. It includes optional flag registration, Prometheus metrics, and a standard library *log.Logger adapter.

License

Notifications You must be signed in to change notification settings

abursavich/zapr

Repository files navigation

Zapr

License GoDev Reference Go Report Card

Zapr provides a logr.LogSink implementation using zap. It includes optional flag registration, Prometheus metrics, and a standard library *log.Logger adapter.

Example

addr := flag.String("http-address", ":8080", "HTTP server listen address.")
zaprObserver := zaprprom.NewObserver()
zaprOptions := zapr.RegisterFlags(flag.CommandLine, zapr.AllOptions(
    zapr.WithObserver(zaprObserver),
    zapr.WithLevel(2), // Override default logging level.
)...)
flag.Parse()

log, sink := zapr.NewLogger(zaprOptions...)
defer sink.Flush() // For most GOOS (linux and darwin), flushing to stderr is a no-op.
log.Info("Hello, zap logr with option flags!")

reg := prometheus.NewRegistry()
reg.MustRegister(
    collectors.NewGoCollector(),
    collectors.NewBuildInfoCollector(),
    collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}),
    zaprObserver, // Register Observer with Prometheus.
)
log.Info("Hello, zap logr Prometheus metrics!")

mux := http.NewServeMux()
mux.Handle("/metrics", promhttp.HandlerFor(reg, promhttp.HandlerOpts{}))

srv := http.Server{
    Addr:     *addr,
    Handler:  mux,
    ErrorLog: zapr.NewStdErrorLogger(sink), // Adapt LogSink to stdlib *log.Logger.
}
if err := srv.ListenAndServe(); err != nil {
    log.Error(err, "Failed to serve HTTP")
}

About

Zapr provides a logr.LogSink implementation using zap. It includes optional flag registration, Prometheus metrics, and a standard library *log.Logger adapter.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages