Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions internal/devserver/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (

type slogLogger struct {
log *slog.Logger
level slog.Level
level *slog.LevelVar
}

var _ log.Logger = slogLogger{}
Expand All @@ -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)...)
}
}
Expand Down
38 changes: 24 additions & 14 deletions internal/devserver/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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
}
Expand All @@ -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() {
Expand All @@ -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),
Expand All @@ -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 {
Expand All @@ -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),
Expand Down Expand Up @@ -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) {
Expand Down
5 changes: 4 additions & 1 deletion internal/temporalcli/commands.server.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,10 @@ 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...")
if !t.Parent.Parent.LogLevel.ChangedFromDefault {
// The server routinely emits various warnings on shutdown.
s.SuppressWarnings()
}
return nil
}

Expand Down