From 2d3efe27c38bcab8496d93a2fb07f5ccc6e81f6e Mon Sep 17 00:00:00 2001 From: Yauheni Kaliuta Date: Mon, 7 Oct 2024 23:57:33 +0300 Subject: [PATCH] components, logger: always use controller's logger Since the log level is overridable with its own field of devFlags, do not use logmode anymore. It was used to create own logger with own zap backend in case if devFlags exist. Just add name and value to the existing logger instead. Rename NewLoggerWithOptions back to NewLogger since former NewLogger is removed. Change component logger name. "DSC.Component" is redundant. It was usuful when component's logger was created from scratch, but now when it is always based on the reconciler's one, it's clear that it is a part of DSC. Signed-off-by: Yauheni Kaliuta --- README.md | 30 +++++++------------ .../datasciencecluster_controller.go | 12 ++------ main.go | 2 +- pkg/logger/logger.go | 22 +------------- 4 files changed, 16 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index b1b7971d47f..73a43ec3b50 100644 --- a/README.md +++ b/README.md @@ -222,8 +222,6 @@ This will ensure that the doc for the apis are updated accordingly. ### Enabled logging -#### Controller level - Global logger configuration can be changed with a command line switch `--log-mode ` for example from CSV. Valid values for ``: "" (as default) || prod || production || devel || development. @@ -231,12 +229,9 @@ Verbosity level is INFO. To fine tune zap backend [standard operator sdk zap switches](https://sdk.operatorframework.io/docs/building-operators/golang/references/logging/) can be used. -#### Component level - -Logger on components can be changed by DSCI devFlags during runtime. -By default, if not set .spec.devFlags.logmode, it uses INFO level -Modification applies to all components, not only these "Managed" ones. -Update DSCI CR with .spec.devFlags.logmode, see example : +Log level can be changed by DSCI devFlags during runtime by setting +.spec.devFlags.logLevel. It accepts the same values as `--zap-log-level` +command line switch. See example : ```console apiVersion: dscinitialization.opendatahub.io/v1 @@ -245,20 +240,17 @@ metadata: name: default-dsci spec: devFlags: - logmode: development + logLevel: debug ... ``` -Avaiable value for logmode is "devel", "development", "prod", "production". -The first two work the same set to DEBUG level; the later two work the same as using ERROR level. - -| .spec.devFlags.logmode | stacktrace level | verbosity | Output | Comments | -| ---------------------- | ---------------- | --------- | -------- | -------------- | -| devel | WARN | INFO | Console | lowest level, using epoch time | -| development | WARN | INFO | Console | same as devel | -| "" | ERROR | INFO | JSON | default option | -| prod | ERROR | INFO | JSON | highest level, using human readable timestamp | -| production | ERROR | INFO | JSON | same as prod | +| logmode | stacktrace level | verbosity | Output | Comments | +|-------------|------------------|-----------|---------|-----------------------------------------------| +| devel | WARN | INFO | Console | lowest level, using epoch time | +| development | WARN | INFO | Console | same as devel | +| "" | ERROR | INFO | JSON | default option | +| prod | ERROR | INFO | JSON | highest level, using human readable timestamp | +| production | ERROR | INFO | JSON | same as prod | ### Example DSCInitialization diff --git a/controllers/datasciencecluster/datasciencecluster_controller.go b/controllers/datasciencecluster/datasciencecluster_controller.go index 8570f270028..084fa537ee8 100644 --- a/controllers/datasciencecluster/datasciencecluster_controller.go +++ b/controllers/datasciencecluster/datasciencecluster_controller.go @@ -57,7 +57,6 @@ import ( "github.com/opendatahub-io/opendatahub-operator/v2/components/modelregistry" "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status" "github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster" - ctrlogger "github.com/opendatahub-io/opendatahub-operator/v2/pkg/logger" annotations "github.com/opendatahub-io/opendatahub-operator/v2/pkg/metadata/annotations" "github.com/opendatahub-io/opendatahub-operator/v2/pkg/metadata/labels" "github.com/opendatahub-io/opendatahub-operator/v2/pkg/upgrade" @@ -313,7 +312,7 @@ func (r *DataScienceClusterReconciler) reconcileSubComponent(ctx context.Context } } // Reconcile component - componentLogger := newComponentLogger(log, componentName, r.DataScienceCluster.DSCISpec) + componentLogger := newComponentLogger(log, componentName) componentCtx := logf.IntoContext(ctx, componentLogger) err := component.ReconcileComponent(componentCtx, r.Client, instance, r.DataScienceCluster.DSCISpec, platform, installedComponentValue) @@ -365,13 +364,8 @@ func (r *DataScienceClusterReconciler) reconcileSubComponent(ctx context.Context return instance, nil } -// newComponentLogger is a wrapper to add DSC name and extract log mode from DSCISpec. -func newComponentLogger(logger logr.Logger, componentName string, dscispec *dsciv1.DSCInitializationSpec) logr.Logger { - mode := "" - if dscispec.DevFlags != nil { - mode = dscispec.DevFlags.LogMode - } - return ctrlogger.NewNamedLogger(logger, "DSC.Components."+componentName, mode) +func newComponentLogger(logger logr.Logger, componentName string) logr.Logger { + return logger.WithName(componentName).WithValues("component", componentName) } func (r *DataScienceClusterReconciler) reportError(err error, instance *dscv1.DataScienceCluster, message string) *dscv1.DataScienceCluster { diff --git a/main.go b/main.go index a50b4c96b40..a146f8783df 100644 --- a/main.go +++ b/main.go @@ -146,7 +146,7 @@ func main() { //nolint:funlen,maintidx flag.Parse() - ctrl.SetLogger(logger.NewLoggerWithOptions(logmode, &opts)) + ctrl.SetLogger(logger.NewLogger(logmode, &opts)) // root context ctx := ctrl.SetupSignalHandler() diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index 49a112eb92d..122ce002bff 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -63,30 +63,10 @@ func SetLevel(levelStr string) error { return nil } -// NewNamedLogger creates a new logger for a component. -// If the mode is set (so can be different from the default one), -// it will create a new logger with the specified mode's options. -func NewNamedLogger(log logr.Logger, name string, mode string) logr.Logger { - if mode != "" { - log = NewLogger(mode) - } - return log.WithName(name) -} - -func NewLoggerWithOptions(mode string, override *ctrlzap.Options) logr.Logger { +func NewLogger(mode string, override *ctrlzap.Options) logr.Logger { opts := newOptions(mode) overrideOptions(opts, override) logLevel.Store(opts.Level) - return newLogger(opts) -} - -// in DSC component, to use different mode for logging, e.g. development, production -// when not set mode it falls to "default" which is used by startup main.go. -func NewLogger(mode string) logr.Logger { - return newLogger(newOptions(mode)) -} - -func newLogger(opts *ctrlzap.Options) logr.Logger { return ctrlzap.New(ctrlzap.UseFlagOptions(opts)) }