From 2543fee47d5c60d8fc208fcec4b90e7a0ce1a18e Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Mon, 12 Jan 2026 10:46:13 -0500 Subject: [PATCH 1/3] Suppress logger warnings during start-dev shutdown --- internal/devserver/log.go | 4 +-- internal/devserver/server.go | 38 ++++++++++++++++--------- internal/temporalcli/commands.server.go | 2 +- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/internal/devserver/log.go b/internal/devserver/log.go index a20cc952b..0a4e71e82 100644 --- a/internal/devserver/log.go +++ b/internal/devserver/log.go @@ -10,7 +10,7 @@ import ( type slogLogger struct { log *slog.Logger - level slog.Level + level *slog.LevelVar } var _ log.Logger = slogLogger{} @@ -31,7 +31,7 @@ func (s slogLogger) SLog() *slog.Logger { } func (s slogLogger) Log(level slog.Level, msg string, tags []tag.Tag) { - if level >= s.level && s.log.Enabled(context.Background(), level) { + if level >= s.level.Level() && s.log.Enabled(context.Background(), level) { s.log.LogAttrs(context.Background(), level, msg, logTagsToAttrs(tags)...) } } diff --git a/internal/devserver/server.go b/internal/devserver/server.go index 230107cfc..75b59bead 100644 --- a/internal/devserver/server.go +++ b/internal/devserver/server.go @@ -91,8 +91,9 @@ type StartOptions struct { } type Server struct { - server temporal.Server - ui *uiserver.Server + server temporal.Server + ui *uiserver.Server + logLevel *slog.LevelVar } func Start(options StartOptions) (*Server, error) { @@ -126,7 +127,7 @@ func Start(options StartOptions) (*Server, error) { if options.UIIP != "" { ui = options.buildUIServer() } - server, err := options.buildServer() + server, logLevel, err := options.buildServer() if err != nil { return nil, err } @@ -149,7 +150,7 @@ func Start(options StartOptions) (*Server, error) { } return nil, err } - return &Server{server, ui}, nil + return &Server{server: server, ui: ui, logLevel: logLevel}, nil } func (s *Server) Stop() { @@ -159,6 +160,12 @@ func (s *Server) Stop() { s.server.Stop() } +func (s *Server) SuppressWarnings() { + if s.logLevel != nil { + s.logLevel.Set(slog.LevelError) + } +} + func (s *StartOptions) buildUIServer() *uiserver.Server { return uiserver.NewServer(uiserveroptions.WithConfigProvider(&uiconfig.Config{ Host: MaybeEscapeIPv6(s.UIIP), @@ -173,19 +180,20 @@ func (s *StartOptions) buildUIServer() *uiserver.Server { })) } -func (s *StartOptions) buildServer() (temporal.Server, error) { - opts, err := s.buildServerOptions() +func (s *StartOptions) buildServer() (temporal.Server, *slog.LevelVar, error) { + opts, logLevel, err := s.buildServerOptions() if err != nil { - return nil, err + return nil, nil, err } - return temporal.NewServer(opts...) + server, err := temporal.NewServer(opts...) + return server, logLevel, err } -func (s *StartOptions) buildServerOptions() ([]temporal.ServerOption, error) { +func (s *StartOptions) buildServerOptions() ([]temporal.ServerOption, *slog.LevelVar, error) { // Build config and log it conf, err := s.buildServerConfig() if err != nil { - return nil, err + return nil, nil, err } else if s.LogConfig != nil { // We're going to marshal YAML if b, err := yaml.Marshal(conf); err != nil { @@ -196,17 +204,19 @@ func (s *StartOptions) buildServerOptions() ([]temporal.ServerOption, error) { } // Build common opts + logLevel := &slog.LevelVar{} + logLevel.Set(s.LogLevel) logger := slogLogger{ log: s.Logger, - level: s.LogLevel, + level: logLevel, } authorizer, err := authorization.GetAuthorizerFromConfig(&conf.Global.Authorization) if err != nil { - return nil, fmt.Errorf("failed creating authorizer: %w", err) + return nil, nil, fmt.Errorf("failed creating authorizer: %w", err) } claimMapper, err := authorization.GetClaimMapperFromConfig(&conf.Global.Authorization, logger) if err != nil { - return nil, fmt.Errorf("failed creating claim mapper: %w", err) + return nil, nil, fmt.Errorf("failed creating claim mapper: %w", err) } opts := []temporal.ServerOption{ temporal.WithConfig(conf), @@ -255,7 +265,7 @@ func (s *StartOptions) buildServerOptions() ([]temporal.ServerOption, error) { opts = append(opts, temporal.WithChainedFrontendGrpcInterceptors(s.GRPCInterceptors...)) } - return opts, nil + return opts, logLevel, nil } func (s *StartOptions) buildServerConfig() (*config.Config, error) { diff --git a/internal/temporalcli/commands.server.go b/internal/temporalcli/commands.server.go index 91af9d801..3b0cc42ab 100644 --- a/internal/temporalcli/commands.server.go +++ b/internal/temporalcli/commands.server.go @@ -165,7 +165,7 @@ func (t *TemporalServerStartDevCommand) run(cctx *CommandContext, args []string) } cctx.Printer.Printlnf("%-8s http://%v:%v/metrics", "Metrics:", toFriendlyIp(opts.FrontendIP), opts.MetricsPort) <-cctx.Done() - cctx.Printer.Println("Stopping server...") + s.SuppressWarnings() return nil } From 3338093ea0cc0c541dfbd015d2261cbe411ac3f4 Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Mon, 12 Jan 2026 11:25:19 -0500 Subject: [PATCH 2/3] Don't suppress if user set log-level --- internal/temporalcli/commands.server.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/temporalcli/commands.server.go b/internal/temporalcli/commands.server.go index 3b0cc42ab..18b8e33ac 100644 --- a/internal/temporalcli/commands.server.go +++ b/internal/temporalcli/commands.server.go @@ -165,7 +165,9 @@ func (t *TemporalServerStartDevCommand) run(cctx *CommandContext, args []string) } cctx.Printer.Printlnf("%-8s http://%v:%v/metrics", "Metrics:", toFriendlyIp(opts.FrontendIP), opts.MetricsPort) <-cctx.Done() - s.SuppressWarnings() + if !t.Parent.Parent.LogLevel.ChangedFromDefault { + s.SuppressWarnings() + } return nil } From 6bfd3ffc132ab3edd82d2ecf0daba405e70e77b0 Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Mon, 12 Jan 2026 15:48:07 -0500 Subject: [PATCH 3/3] Add comment --- internal/temporalcli/commands.server.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/temporalcli/commands.server.go b/internal/temporalcli/commands.server.go index 18b8e33ac..09b606eeb 100644 --- a/internal/temporalcli/commands.server.go +++ b/internal/temporalcli/commands.server.go @@ -166,6 +166,7 @@ func (t *TemporalServerStartDevCommand) run(cctx *CommandContext, args []string) cctx.Printer.Printlnf("%-8s http://%v:%v/metrics", "Metrics:", toFriendlyIp(opts.FrontendIP), opts.MetricsPort) <-cctx.Done() if !t.Parent.Parent.LogLevel.ChangedFromDefault { + // The server routinely emits various warnings on shutdown. s.SuppressWarnings() } return nil