From 08cb7d1be1b84df2f3df56a44b9ba6fad3958576 Mon Sep 17 00:00:00 2001 From: Jason Lynch Date: Wed, 18 Mar 2026 12:48:45 -0400 Subject: [PATCH] refactor: use constants for component logger names Switches to using constants for and centralizes all of the component names. This will make it easier to keep the component list in our docs up-to-date. --- docs/installation/configuration.md | 5 ++-- server/internal/api/server.go | 2 +- server/internal/election/candidate.go | 2 +- server/internal/etcd/embedded.go | 2 +- server/internal/etcd/logging.go | 2 +- server/internal/etcd/remote.go | 2 +- server/internal/logging/factory.go | 29 +++++++++++++++---- .../migrate/migrations/add_task_scope.go | 2 +- server/internal/migrate/runner.go | 2 +- server/internal/ports/service.go | 2 +- server/internal/scheduler/service.go | 2 +- server/internal/workflows/provide.go | 4 +-- server/internal/workflows/worker.go | 2 +- 13 files changed, 39 insertions(+), 19 deletions(-) diff --git a/docs/installation/configuration.md b/docs/installation/configuration.md index f802bc79..6471066b 100644 --- a/docs/installation/configuration.md +++ b/docs/installation/configuration.md @@ -63,9 +63,10 @@ This is the current list of components that can be configured in the `logging.co - `api_server` - `election_candidate` - `embedded_etcd` -- `remote_etcd` - `migration` - `migration_runner` +- `ports_service` +- `remote_etcd` - `scheduler_service` +- `workflows_backend` - `workflows_worker` -- `ports_service` diff --git a/server/internal/api/server.go b/server/internal/api/server.go index 539d6618..dd8d03ee 100644 --- a/server/internal/api/server.go +++ b/server/internal/api/server.go @@ -46,7 +46,7 @@ func NewServer( // Mount all the v1 handlers v1Svc.Mount(mux) - logger := loggerFactory.Logger("api_server") + logger := loggerFactory.Logger(logging.ComponentAPIServer) handler := addMiddleware(logger, mux) var ( diff --git a/server/internal/election/candidate.go b/server/internal/election/candidate.go index 2ec834a6..7b34ea61 100644 --- a/server/internal/election/candidate.go +++ b/server/internal/election/candidate.go @@ -51,7 +51,7 @@ func NewCandidate( ) *Candidate { return &Candidate{ store: store, - logger: loggerFactory.Logger("election_candidate").With(). + logger: loggerFactory.Logger(logging.ComponentElectionCandidate).With(). Stringer("election_name", electionName). Str("candidate_id", candidateID). Logger(), diff --git a/server/internal/etcd/embedded.go b/server/internal/etcd/embedded.go index a8cc9e6f..8b46626a 100644 --- a/server/internal/etcd/embedded.go +++ b/server/internal/etcd/embedded.go @@ -49,7 +49,7 @@ func NewEmbeddedEtcd(cfg *config.Manager, loggerFactory *logging.Factory) *Embed return &EmbeddedEtcd{ cfg: cfg, initialized: make(chan struct{}), - logger: loggerFactory.Logger("embedded_etcd"), + logger: loggerFactory.Logger(logging.ComponentEmbeddedEtcd), loggerFactory: loggerFactory, } } diff --git a/server/internal/etcd/logging.go b/server/internal/etcd/logging.go index be3409f8..56dcd175 100644 --- a/server/internal/etcd/logging.go +++ b/server/internal/etcd/logging.go @@ -17,7 +17,7 @@ func newZapLogger(base zerolog.Logger, logLevel, component string) (*zap.Logger, core := zerozap.New(base. Level(level). With(). - Str("component", component). + Str("etcd_component", component). Logger()) return zap.New(core), nil } diff --git a/server/internal/etcd/remote.go b/server/internal/etcd/remote.go index 40b7282c..ef360f3e 100644 --- a/server/internal/etcd/remote.go +++ b/server/internal/etcd/remote.go @@ -38,7 +38,7 @@ func NewRemoteEtcd(cfg *config.Manager, loggerFactory *logging.Factory) *RemoteE cfg: cfg, initialized: make(chan struct{}), err: make(chan error), - logger: loggerFactory.Logger("remote_etcd"), + logger: loggerFactory.Logger(logging.ComponentRemoteEtcd), loggerFactory: loggerFactory, } } diff --git a/server/internal/logging/factory.go b/server/internal/logging/factory.go index cdcf6a0c..30e4c5aa 100644 --- a/server/internal/logging/factory.go +++ b/server/internal/logging/factory.go @@ -8,20 +8,39 @@ import ( "github.com/pgEdge/control-plane/server/internal/config" ) +type Component string + +func (c Component) String() string { + return string(c) +} + +const ( + ComponentAPIServer Component = "api_server" + ComponentElectionCandidate Component = "election_candidate" + ComponentEmbeddedEtcd Component = "embedded_etcd" + ComponentMigration Component = "migration" + ComponentMigrationRunner Component = "migration_runner" + ComponentPortsService Component = "ports_service" + ComponentRemoteEtcd Component = "remote_etcd" + ComponentSchedulerService Component = "scheduler_service" + ComponentWorkflowsBackend Component = "workflows_backend" + ComponentWorkflowsWorker Component = "workflows_worker" +) + type Factory struct { base zerolog.Logger - componentLevels map[string]zerolog.Level + componentLevels map[Component]zerolog.Level } func NewFactory(cfg config.Config, base zerolog.Logger) (*Factory, error) { - componentLevels := map[string]zerolog.Level{} + componentLevels := map[Component]zerolog.Level{} for component, l := range cfg.Logging.ComponentLevels { level, err := zerolog.ParseLevel(l) if err != nil { return nil, fmt.Errorf("failed to parse level for component '%s': %w", component, err) } - componentLevels[component] = level + componentLevels[Component(component)] = level } return &Factory{ @@ -30,12 +49,12 @@ func NewFactory(cfg config.Config, base zerolog.Logger) (*Factory, error) { }, nil } -func (f *Factory) Logger(component string) zerolog.Logger { +func (f *Factory) Logger(component Component) zerolog.Logger { logger := f.base level, ok := f.componentLevels[component] if ok { logger = logger.Level(level) } - return logger.With().Str("component", component).Logger() + return logger.With().Stringer("component", component).Logger() } diff --git a/server/internal/migrate/migrations/add_task_scope.go b/server/internal/migrate/migrations/add_task_scope.go index 1340049e..61b9c644 100644 --- a/server/internal/migrate/migrations/add_task_scope.go +++ b/server/internal/migrate/migrations/add_task_scope.go @@ -40,7 +40,7 @@ func (a *AddTaskScope) Run(ctx context.Context, i *do.Injector) error { return fmt.Errorf("failed to initialize task store: %w", err) } - logger := loggerFactory.Logger("migration").With(). + logger := loggerFactory.Logger(logging.ComponentMigration).With(). Str("identifier", a.Identifier()). Logger() diff --git a/server/internal/migrate/runner.go b/server/internal/migrate/runner.go index a91f8cea..e0e7cb1b 100644 --- a/server/internal/migrate/runner.go +++ b/server/internal/migrate/runner.go @@ -48,7 +48,7 @@ func NewRunner( hostID: hostID, store: store, injector: injector, - logger: loggerFactory.Logger("migration_runner"), + logger: loggerFactory.Logger(logging.ComponentMigrationRunner), migrations: migrations, candidate: candidate, errCh: make(chan error, 1), diff --git a/server/internal/ports/service.go b/server/internal/ports/service.go index 07a736af..37ddccaa 100644 --- a/server/internal/ports/service.go +++ b/server/internal/ports/service.go @@ -56,7 +56,7 @@ func NewService( ) *Service { return &Service{ cfg: cfg, - logger: loggerFactory.Logger("ports_service"), + logger: loggerFactory.Logger(logging.ComponentPortsService), store: store, portChecker: portChecker, hostSvc: hostSvc, diff --git a/server/internal/scheduler/service.go b/server/internal/scheduler/service.go index 463dc0a9..0ac7deb5 100644 --- a/server/internal/scheduler/service.go +++ b/server/internal/scheduler/service.go @@ -38,7 +38,7 @@ func NewService( elector *Elector, ) *Service { return &Service{ - logger: loggerFactory.Logger("scheduler_service"), + logger: loggerFactory.Logger(logging.ComponentSchedulerService), store: store, executor: executor, etcdClient: etcdClient, diff --git a/server/internal/workflows/provide.go b/server/internal/workflows/provide.go index 8d8ad655..ec66a099 100644 --- a/server/internal/workflows/provide.go +++ b/server/internal/workflows/provide.go @@ -3,7 +3,6 @@ package workflows import ( "github.com/cschleiden/go-workflows/backend" "github.com/cschleiden/go-workflows/client" - "github.com/rs/zerolog" "github.com/samber/do" clientv3 "go.etcd.io/etcd/client/v3" @@ -83,10 +82,11 @@ func provideBackend(i *do.Injector) { if err != nil { return nil, err } - zl, err := do.Invoke[zerolog.Logger](i) + loggerFactory, err := do.Invoke[*logging.Factory](i) if err != nil { return nil, err } + zl := loggerFactory.Logger(logging.ComponentWorkflowsBackend) logger := logging.Slog(zl, zl.GetLevel()) backendOpts := backend.ApplyOptions( backend.WithLogger(logger), diff --git a/server/internal/workflows/worker.go b/server/internal/workflows/worker.go index 1b5c9254..dc5e3677 100644 --- a/server/internal/workflows/worker.go +++ b/server/internal/workflows/worker.go @@ -46,7 +46,7 @@ func NewWorker(loggerFactory *logging.Factory, be backend.Backend, workflows *Wo } return &Worker{ - logger: loggerFactory.Logger("workflows_worker"), + logger: loggerFactory.Logger(logging.ComponentWorkflowsWorker), worker: w, workflows: workflows, }, nil