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