Skip to content

Commit

Permalink
logger, components: always use controller's logger
Browse files Browse the repository at this point in the history
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.

Signed-off-by: Yauheni Kaliuta <[email protected]>
  • Loading branch information
ykaliuta committed Oct 9, 2024
1 parent 1dfc77b commit 83d9e37
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 49 deletions.
30 changes: 11 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,21 +222,16 @@ 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 <mode>`
for example from CSV. Valid values for `<mode>`: "" (as default) || prod || production || devel || development.

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
Expand All @@ -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

Expand Down
11 changes: 3 additions & 8 deletions controllers/datasciencecluster/datasciencecluster_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -311,7 +310,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)

Expand Down Expand Up @@ -364,12 +363,8 @@ func (r *DataScienceClusterReconciler) reconcileSubComponent(ctx context.Context
}

// 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("DSC.Components."+componentName).WithValues("component", componentName)
}

func (r *DataScienceClusterReconciler) reportError(err error, instance *dscv1.DataScienceCluster, message string) *dscv1.DataScienceCluster {
Expand Down
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,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()
Expand Down
22 changes: 1 addition & 21 deletions pkg/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -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))
}

Expand Down

0 comments on commit 83d9e37

Please sign in to comment.