From 2f01c07820f7bdb85f96709ec1b59365ed0842e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Rold=C3=A1n=20Betancort?= Date: Tue, 27 Sep 2022 12:39:08 +0100 Subject: [PATCH] improve logging of http/grpc servers - remove warning in favour of key-value - add missing message when serving http plain-text - align message wording - change "prefix" with "service" in log messages - log error stopping HTTP server as error, not warn - incorrect error message "failed while serving http", it was unclear if it was http or https --- go.mod | 2 +- go.sum | 6 +- internal/datastore/proxy/caching.go | 1 - internal/dispatch/caching/caching.go | 1 + internal/dispatch/graph/check_test.go | 6 +- .../dispatch/graph/lookupsubjects_test.go | 4 +- internal/logging/logger.go | 50 +++++---------- internal/services/cert_test.go | 1 - pkg/cmd/devtools.go | 62 +++++++++++-------- pkg/cmd/root.go | 8 +-- pkg/cmd/server/defaults.go | 10 +-- pkg/cmd/util/util.go | 35 ++++++++--- 12 files changed, 95 insertions(+), 91 deletions(-) diff --git a/go.mod b/go.mod index 0198d9c2c8..90acdfe2ee 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/jackc/pgx/v4 v4.17.2 github.com/johannesboyne/gofakes3 v0.0.0-20220314170512-33c13122505e github.com/jwangsadinata/go-multimap v0.0.0-20190620162914-c29f3d7f33b6 - github.com/jzelinskie/cobrautil/v2 v2.0.0-00010101000000-000000000000 + github.com/jzelinskie/cobrautil/v2 v2.0.0-20221003230316-3022721fa8f0 github.com/jzelinskie/stringz v0.0.1 github.com/lib/pq v1.10.7 github.com/mostynb/go-grpc-compression v1.1.17 diff --git a/go.sum b/go.sum index 4fcf07c071..a77bd68f76 100644 --- a/go.sum +++ b/go.sum @@ -242,6 +242,8 @@ github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.0 h1:n4JnPI1T3Qq1SFEi/F8rwLrZERp2bso19PJZDB9dayk= +github.com/go-logr/zerologr v1.2.2 h1:nKJ1glUZQPURRpe20GaqCBgNyGYg9cylaerwrwKoogE= +github.com/go-logr/zerologr v1.2.2/go.mod h1:eIsB+dwGuN3lAGytcpbXyBeiY8GKInIxy+Qwe+gI5lI= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= @@ -482,8 +484,8 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jwangsadinata/go-multimap v0.0.0-20190620162914-c29f3d7f33b6 h1:OzCtZaD1uI5Fc1C+4oNAp7kZ4ibh5OIgxI29moH/IbE= github.com/jwangsadinata/go-multimap v0.0.0-20190620162914-c29f3d7f33b6/go.mod h1:CEusGbCRDFcHX9EgEhPsgJX33kpp9CfSFRBAoSGOems= -github.com/jzelinskie/cobrautil v0.0.13-0.20220923164429-6dcc9495477a h1:kDNYsFya9fU9op5VhQbFvyS9niVz4oXf6rp5msKYoZo= -github.com/jzelinskie/cobrautil v0.0.13-0.20220923164429-6dcc9495477a/go.mod h1:6ZtWJBr5t74cu9ysAyXs9j2Wkxc++ZR/09St+9CG68M= +github.com/jzelinskie/cobrautil/v2 v2.0.0-20221003230316-3022721fa8f0 h1:PQtSXhXhIND0B9Qea303xJ/TsHFFlr+HVsU/kB8rKQo= +github.com/jzelinskie/cobrautil/v2 v2.0.0-20221003230316-3022721fa8f0/go.mod h1:iqQf0oijpU31L1tuvD9+dKxkhdAv9IaKlnzVattaDwo= github.com/jzelinskie/stringz v0.0.1 h1:IahR+y8ct2nyj7B6i8UtFsGFj4ex1SX27iKFYsAheLk= github.com/jzelinskie/stringz v0.0.1/go.mod h1:hHYbgxJuNLRw91CmpuFsYEOyQqpDVFg8pvEh23vy4P0= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= diff --git a/internal/datastore/proxy/caching.go b/internal/datastore/proxy/caching.go index fd84c68796..89db60b918 100644 --- a/internal/datastore/proxy/caching.go +++ b/internal/datastore/proxy/caching.go @@ -11,7 +11,6 @@ import ( "github.com/stretchr/testify/require" "golang.org/x/sync/singleflight" - log "github.com/authzed/spicedb/internal/logging" "github.com/authzed/spicedb/pkg/cache" "github.com/authzed/spicedb/pkg/datastore" core "github.com/authzed/spicedb/pkg/proto/core/v1" diff --git a/internal/dispatch/caching/caching.go b/internal/dispatch/caching/caching.go index 61c89b6ae5..67d41a9c97 100644 --- a/internal/dispatch/caching/caching.go +++ b/internal/dispatch/caching/caching.go @@ -10,6 +10,7 @@ import ( "github.com/dustin/go-humanize" "github.com/prometheus/client_golang/prometheus" + "github.com/stretchr/testify/require" "github.com/authzed/spicedb/internal/dispatch" "github.com/authzed/spicedb/internal/dispatch/keys" diff --git a/internal/dispatch/graph/check_test.go b/internal/dispatch/graph/check_test.go index c9c869080d..09712cc937 100644 --- a/internal/dispatch/graph/check_test.go +++ b/internal/dispatch/graph/check_test.go @@ -5,7 +5,7 @@ import ( "fmt" "testing" - "github.com/authzed/spicedb/internal/logging" + log "github.com/authzed/spicedb/internal/logging" "github.com/shopspring/decimal" "github.com/stretchr/testify/require" @@ -150,7 +150,7 @@ func TestMaxDepth(t *testing.T) { mutation := tuple.Create(tuple.Parse("folder:oops#owner@folder:oops#owner")) - ctx := logging.Logger.WithContext(datastoremw.ContextWithHandle(context.Background())) + ctx := log.Logger.WithContext(datastoremw.ContextWithHandle(context.Background())) require.NoError(datastoremw.SetInContext(ctx, ds)) revision, err := common.UpdateTuplesInDatastore(ctx, ds, mutation) @@ -287,7 +287,7 @@ func newLocalDispatcher(t testing.TB) (context.Context, dispatch.Dispatcher, dec cachingDispatcher.SetDelegate(dispatch) require.NoError(t, err) - ctx := logging.Logger.WithContext(datastoremw.ContextWithHandle(context.Background())) + ctx := log.Logger.WithContext(datastoremw.ContextWithHandle(context.Background())) require.NoError(t, datastoremw.SetInContext(ctx, ds)) return ctx, cachingDispatcher, revision diff --git a/internal/dispatch/graph/lookupsubjects_test.go b/internal/dispatch/graph/lookupsubjects_test.go index 688325a337..5f37cf564a 100644 --- a/internal/dispatch/graph/lookupsubjects_test.go +++ b/internal/dispatch/graph/lookupsubjects_test.go @@ -6,7 +6,7 @@ import ( "sort" "testing" - "github.com/authzed/spicedb/internal/logging" + log "github.com/authzed/spicedb/internal/logging" "github.com/shopspring/decimal" "github.com/stretchr/testify/require" @@ -182,7 +182,7 @@ func TestLookupSubjectsMaxDepth(t *testing.T) { ds, _ := testfixtures.StandardDatastoreWithSchema(rawDS, require) - ctx := logging.Logger.WithContext(datastoremw.ContextWithHandle(context.Background())) + ctx := log.Logger.WithContext(datastoremw.ContextWithHandle(context.Background())) require.NoError(datastoremw.SetInContext(ctx, ds)) tpl := tuple.Parse("folder:oops#owner@folder:oops#owner") diff --git a/internal/logging/logger.go b/internal/logging/logger.go index a6121bc922..1c13ea5921 100644 --- a/internal/logging/logger.go +++ b/internal/logging/logger.go @@ -10,53 +10,35 @@ import ( var Logger zerolog.Logger func init() { - nop := zerolog.Nop() - SetGlobalLogger(nop) + SetGlobalLogger(zerolog.Nop()) } func SetGlobalLogger(logger zerolog.Logger) { Logger = logger + zerolog.DefaultContextLogger = &Logger } -func With() zerolog.Context { - return Logger.With() -} +func With() zerolog.Context { return Logger.With() } -func Err(err error) *zerolog.Event { - return Logger.Err(err) -} +func Err(err error) *zerolog.Event { return Logger.Err(err) } -func Trace() *zerolog.Event { - return Logger.Trace() -} +func Trace() *zerolog.Event { return Logger.Trace() } -func Debug() *zerolog.Event { - return Logger.Debug() -} +func Debug() *zerolog.Event { return Logger.Debug() } -func Info() *zerolog.Event { - return Logger.Info() -} +func Info() *zerolog.Event { return Logger.Info() } -func Warn() *zerolog.Event { - return Logger.Warn() -} +func Warn() *zerolog.Event { return Logger.Warn() } -func Error() *zerolog.Event { - return Logger.Error() -} +func Error() *zerolog.Event { return Logger.Error() } -func Fatal() *zerolog.Event { - return Logger.Fatal() -} +func Fatal() *zerolog.Event { return Logger.Fatal() } -func WithLevel(level zerolog.Level) *zerolog.Event { - return Logger.WithLevel(level) -} +func WithLevel(level zerolog.Level) *zerolog.Event { return Logger.WithLevel(level) } -func Log() *zerolog.Event { - return Logger.Log() -} +func Log() *zerolog.Event { return Logger.Log() } + +func Ctx(ctx context.Context) *zerolog.Logger { return zerolog.Ctx(ctx) } func Print(v ...interface{}) { Logger.Debug().CallerSkipFrame(1).Msg(fmt.Sprint(v...)) @@ -65,7 +47,3 @@ func Print(v ...interface{}) { func Printf(format string, v ...interface{}) { Logger.Debug().CallerSkipFrame(1).Msgf(format, v...) } - -func Ctx(ctx context.Context) *zerolog.Logger { - return zerolog.Ctx(ctx) -} diff --git a/internal/services/cert_test.go b/internal/services/cert_test.go index 4e80ef79fc..a2a9700422 100644 --- a/internal/services/cert_test.go +++ b/internal/services/cert_test.go @@ -110,7 +110,6 @@ func TestCertRotation(t *testing.T) { emptyDS, err := memdb.NewMemdbDatastore(0, 10, time.Duration(90_000_000_000_000)) require.NoError(t, err) ds, revision := tf.StandardDatastoreWithData(emptyDS, require.New(t)) - srv, err := server.NewConfigWithOptions( server.WithDatastore(ds), server.WithDispatcher(graph.NewLocalOnlyDispatcher(1)), diff --git a/pkg/cmd/devtools.go b/pkg/cmd/devtools.go index e38aff1eca..587ab60dec 100644 --- a/pkg/cmd/devtools.go +++ b/pkg/cmd/devtools.go @@ -8,18 +8,17 @@ import ( "os/signal" "time" - "github.com/go-logr/zerologr" - v0 "github.com/authzed/authzed-go/proto/authzed/api/v0" "github.com/authzed/grpcutil" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/go-logr/zerologr" grpczerolog "github.com/grpc-ecosystem/go-grpc-middleware/providers/zerolog/v2" grpclog "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging" grpcprom "github.com/grpc-ecosystem/go-grpc-prometheus" "github.com/jzelinskie/cobrautil/v2" - cobragrpc "github.com/jzelinskie/cobrautil/v2/grpc" - cobrahttp "github.com/jzelinskie/cobrautil/v2/http" + "github.com/jzelinskie/cobrautil/v2/cobragrpc" + "github.com/jzelinskie/cobrautil/v2/cobrahttp" "github.com/jzelinskie/stringz" "github.com/spf13/cobra" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" @@ -33,9 +32,9 @@ import ( ) func RegisterDevtoolsFlags(cmd *cobra.Command) { - cobragrpc.RegisterGrpcServerFlags(cmd.Flags(), "grpc", "gRPC", ":50051", true) - cobrahttp.RegisterHTTPServerFlags(cmd.Flags(), "metrics", "metrics", ":9090", true) - cobrahttp.RegisterHTTPServerFlags(cmd.Flags(), "http", "download", ":8443", false) + grpcServiceBuilder().RegisterFlags(cmd.Flags()) + httpMetricsServiceBuilder().RegisterFlags(cmd.Flags()) + httpDownloadServiceBuilder().RegisterFlags(cmd.Flags()) cmd.Flags().String("share-store", "inmemory", "kind of share store to use") cmd.Flags().String("share-store-salt", "", "salt for share store hashing") @@ -57,12 +56,9 @@ func NewDevtoolsCommand(programName string) *cobra.Command { } } -func runfunc(cmd *cobra.Command, args []string) error { - grpcUtil := cobragrpc.New("grpc", - cobragrpc.WithLogger(zerologr.New(&log.Logger)), - cobragrpc.WithFlagPrefix("grpc"), - ) - grpcServer, err := grpcUtil.ServerFromFlags(cmd, +func runfunc(cmd *cobra.Command, _ []string) error { + grpcBuilder := grpcServiceBuilder() + grpcServer, err := grpcBuilder.ServerFromFlags(cmd, grpc.ChainUnaryInterceptor( grpclog.UnaryServerInterceptor(grpczerolog.InterceptorLogger(log.Logger)), otelgrpc.UnaryServerInterceptor(), @@ -80,34 +76,26 @@ func runfunc(cmd *cobra.Command, args []string) error { registerDeveloperGrpcServices(grpcServer, shareStore) go func() { - if err := grpcUtil.ListenFromFlags(cmd, grpcServer); err != nil { + if err := grpcBuilder.ListenFromFlags(cmd, grpcServer); err != nil { log.Warn().Err(err).Msg("gRPC service did not shutdown cleanly") } }() // Start the metrics endpoint. - metricsHTTP := cobrahttp.New("metrics", - cobrahttp.WithLogger(zerologr.New(&log.Logger)), - cobrahttp.WithFlagPrefix("metrics"), - cobrahttp.WithHandler(server.MetricsHandler(server.DisableTelemetryHandler)), - ) + metricsHTTP := httpMetricsServiceBuilder() metricsSrv := metricsHTTP.ServerFromFlags(cmd) go func() { - if err := metricsHTTP.ListenWithServerFromFlags(cmd, metricsSrv); err != nil { + if err := metricsHTTP.ListenFromFlags(cmd, metricsSrv); err != nil { log.Fatal().Err(err).Msg("failed while serving metrics") } }() // start the http download api - downloadHTTP := cobrahttp.New("download", - cobrahttp.WithLogger(zerologr.New(&log.Logger)), - cobrahttp.WithFlagPrefix("http"), - cobrahttp.WithHandler(v0svc.DownloadHandler(shareStore)), - ) + downloadHTTP := httpDownloadServiceBuilder(cobrahttp.WithHandler(v0svc.DownloadHandler(shareStore))) downloadSrv := downloadHTTP.ServerFromFlags(cmd) downloadSrv.ReadHeaderTimeout = 5 * time.Second go func() { - if err := downloadHTTP.ListenWithServerFromFlags(cmd, downloadSrv); err != nil { + if err := downloadHTTP.ListenFromFlags(cmd, downloadSrv); err != nil { log.Fatal().Err(err).Msg("failed while serving download http api") } }() @@ -127,6 +115,28 @@ func runfunc(cmd *cobra.Command, args []string) error { return nil } +func httpDownloadServiceBuilder(option ...cobrahttp.Option) *cobrahttp.Builder { + option = append(option, + cobrahttp.WithLogger(zerologr.New(&log.Logger)), + cobrahttp.WithFlagPrefix("http")) + return cobrahttp.New("download", option...) +} + +func httpMetricsServiceBuilder() *cobrahttp.Builder { + return cobrahttp.New("metrics", + cobrahttp.WithLogger(zerologr.New(&log.Logger)), + cobrahttp.WithFlagPrefix("metrics"), + cobrahttp.WithHandler(server.MetricsHandler(server.DisableTelemetryHandler)), + ) +} + +func grpcServiceBuilder() *cobragrpc.Builder { + return cobragrpc.New("grpc", + cobragrpc.WithLogger(zerologr.New(&log.Logger)), + cobragrpc.WithFlagPrefix("grpc"), + ) +} + func shareStoreFromCmd(cmd *cobra.Command) (v0svc.ShareStore, error) { shareStoreSalt := cobrautil.MustGetStringExpanded(cmd, "share-store-salt") shareStoreKind := cobrautil.MustGetStringExpanded(cmd, "share-store") diff --git a/pkg/cmd/root.go b/pkg/cmd/root.go index 4df382dbce..86af5f737e 100644 --- a/pkg/cmd/root.go +++ b/pkg/cmd/root.go @@ -1,8 +1,8 @@ package cmd import ( - cobraotel "github.com/jzelinskie/cobrautil/v2/otel" - cobralog "github.com/jzelinskie/cobrautil/v2/zerolog" + "github.com/jzelinskie/cobrautil/v2/cobraotel" + "github.com/jzelinskie/cobrautil/v2/cobrazerolog" "github.com/spf13/cobra" "github.com/authzed/spicedb/pkg/cmd/server" @@ -10,8 +10,8 @@ import ( ) func RegisterRootFlags(cmd *cobra.Command) { - cobralog.RegisterZeroLogFlags(cmd.PersistentFlags(), "log") - cobraotel.RegisterOpenTelemetryFlags(cmd.PersistentFlags(), "otel", cmd.Use) + cobrazerolog.New().RegisterFlags(cmd.PersistentFlags()) + cobraotel.New(cmd.Use).RegisterFlags(cmd.PersistentFlags()) releases.RegisterFlags(cmd.PersistentFlags()) } diff --git a/pkg/cmd/server/defaults.go b/pkg/cmd/server/defaults.go index 0562582263..45c5a2ba15 100644 --- a/pkg/cmd/server/defaults.go +++ b/pkg/cmd/server/defaults.go @@ -12,8 +12,8 @@ import ( grpclog "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging" grpcprom "github.com/grpc-ecosystem/go-grpc-prometheus" "github.com/jzelinskie/cobrautil/v2" - cobraotel "github.com/jzelinskie/cobrautil/v2/otel" - cobralog "github.com/jzelinskie/cobrautil/v2/zerolog" + "github.com/jzelinskie/cobrautil/v2/cobraotel" + "github.com/jzelinskie/cobrautil/v2/cobrazerolog" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/rs/zerolog" @@ -56,9 +56,9 @@ func ServeExample(programName string) string { func DefaultPreRunE(programName string) cobrautil.CobraRunFunc { return cobrautil.CommandStack( cobrautil.SyncViperPreRunE(programName), - cobralog.New( - cobralog.WithAsync(1000, 10*time.Millisecond), - cobralog.WithTarget(func(logger zerolog.Logger) { + cobrazerolog.New( + cobrazerolog.WithAsync(1000, 10*time.Millisecond), + cobrazerolog.WithTarget(func(logger zerolog.Logger) { logging.SetGlobalLogger(logger) }), ).RunE(), diff --git a/pkg/cmd/util/util.go b/pkg/cmd/util/util.go index 1fabbd89e3..af24ae0fdb 100644 --- a/pkg/cmd/util/util.go +++ b/pkg/cmd/util/util.go @@ -99,8 +99,13 @@ func (c *GRPCServerConfig) Complete(level zerolog.Level, svcRegistrationFn func( if err != nil { return nil, fmt.Errorf("failed to listen on addr for gRPC server: %w", err) } - log.WithLevel(level).Str("addr", c.Address).Str("network", c.Network). - Str("prefix", c.flagPrefix).Uint32("workers", c.MaxWorkers).Msg("grpc server started listening") + log.WithLevel(level). + Str("addr", c.Address). + Str("network", c.Network). + Str("service", c.flagPrefix). + Uint32("workers", c.MaxWorkers). + Bool("insecure", c.TLSCertPath == "" && c.TLSKeyPath == ""). + Msg("grpc server started serving") srv := grpc.NewServer(opts...) svcRegistrationFn(srv) @@ -114,8 +119,11 @@ func (c *GRPCServerConfig) Complete(level zerolog.Level, svcRegistrationFn func( dial: dial, netDial: netDial, prestopFunc: func() { - log.WithLevel(level).Str("addr", c.Address).Str("network", c.Network). - Str("prefix", c.flagPrefix).Msg("grpc server stopped listening") + log.WithLevel(level). + Str("addr", c.Address). + Str("network", c.Network). + Str("service", c.flagPrefix). + Msg("grpc server stopped serving") }, stopFunc: srv.GracefulStop, creds: clientCreds, @@ -148,7 +156,6 @@ func (c *GRPCServerConfig) listenerAndDialer() (net.Listener, DialFunc, NetDialF func (c *GRPCServerConfig) tlsOpts() ([]grpc.ServerOption, *certwatcher.CertWatcher, error) { switch { case c.TLSCertPath == "" && c.TLSKeyPath == "": - log.Warn().Str("prefix", c.flagPrefix).Msg("grpc server serving plaintext") return nil, nil, nil case c.TLSCertPath != "" && c.TLSKeyPath != "": watcher, err := certwatcher.New(c.TLSCertPath, c.TLSKeyPath) @@ -309,7 +316,11 @@ func (c *HTTPServerConfig) Complete(level zerolog.Level, handler http.Handler) ( switch { case c.TLSCertPath == "" && c.TLSKeyPath == "": serveFunc = func() error { - log.Warn().Str("addr", srv.Addr).Str("prefix", c.flagPrefix).Msg("http server serving plaintext") + log.WithLevel(level). + Str("addr", srv.Addr). + Str("service", c.flagPrefix). + Bool("insecure", c.TLSCertPath == "" && c.TLSKeyPath == ""). + Msg("http server started serving") return srv.ListenAndServe() } @@ -327,7 +338,11 @@ func (c *HTTPServerConfig) Complete(level zerolog.Level, handler http.Handler) ( return nil, err } serveFunc = func() error { - log.WithLevel(level).Str("addr", srv.Addr).Str("prefix", c.flagPrefix).Msg("https server started serving") + log.WithLevel(level). + Str("addr", srv.Addr). + Str("prefix", c.flagPrefix). + Bool("insecure", c.TLSCertPath == "" && c.TLSKeyPath == ""). + Msg("http server started serving") return srv.Serve(listener) } default: @@ -340,15 +355,15 @@ func (c *HTTPServerConfig) Complete(level zerolog.Level, handler http.Handler) ( return &completedHTTPServer{ srvFunc: func() error { if err := serveFunc(); err != nil && !errors.Is(err, http.ErrServerClosed) { - return fmt.Errorf("failed while serving https: %w", err) + return fmt.Errorf("failed while serving http: %w", err) } return nil }, closeFunc: func() { if err := srv.Close(); err != nil { - log.Warn().Str("addr", srv.Addr).Str("prefix", c.flagPrefix).Err(err).Msg("error stopping http server") + log.Error().Str("addr", srv.Addr).Str("service", c.flagPrefix).Err(err).Msg("error stopping http server") } - log.WithLevel(level).Str("addr", srv.Addr).Str("prefix", c.flagPrefix).Msg("http server stopped serving") + log.WithLevel(level).Str("addr", srv.Addr).Str("service", c.flagPrefix).Msg("http server stopped serving") }, enabled: c.Enabled, }, nil